Setup

back to TOC

Data preparation

220 parsing failures.
row # A tibble: 5 x 4 col     row   col           expected actual expected   <int> <int>              <chr>  <chr> actual 1   301    NA date like %m/%d/%y Jun-07 row 2   302    NA date like %m/%d/%y Jun-07 col 3   303    NA date like %m/%d/%y Jun-07 expected 4   304    NA date like %m/%d/%y Jun-07 actual 5   305    NA date like %m/%d/%y Jun-07
... ................. ... ....................................... ........ ....................................... ...... ....................................... ... ....................................... ... ....................................... ........ ....................................... ...... .......................................
See problems(...) for more details.
80 parsing failures.
row # A tibble: 5 x 4 col     row   col           expected actual expected   <int> <int>              <chr>  <chr> actual 1    21    NA date like %m/%d/%y Jun-12 row 2    22    NA date like %m/%d/%y Jun-12 col 3    23    NA date like %m/%d/%y Jun-12 expected 4    24    NA date like %m/%d/%y Jun-12 actual 5    25    NA date like %m/%d/%y Jun-12
... ................. ... ....................................... ........ ....................................... ...... ....................................... ... ....................................... ... ....................................... ........ ....................................... ...... .......................................
See problems(...) for more details.

back to TOC

Analysis plan

For all studies we conduct exploratory factor analyses using Pearson correlations to find minimum residual solutions.

For each study, we first examine maximal unrotated and rotated solutions. To determine the maximum number of factors to extract, we use the following rule of thumb: With \(p\) observations per participant, we can extract a maximum of \(k\) factors, where \((p-k)*2 > p+k\), i.e., \(k < p/3\). Thus, with 40 mental capacity items, we can extract a maximum of 13 factors.

To determine how many factors to retain, we use the following preset retention criteria, considering the unrotated maximal solution (unless otherwise noted):

We then examine and interpret varimax-rotated solutions, extracting only the number of factors that meet these criteria.

Study 1

Study information:

Demographics

Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector

back to TOC

Exploratory factor analysis

Step 1: Run maximal EFA (without and with rotation)

Parallel analysis suggests that the number of factors =  4  and the number of components =  4 

Factor Analysis using method =  minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   MR4   MR5   MR6   MR7   MR8   MR9  MR10  MR11  MR12  MR13
angry           0.65 -0.04 -0.11 -0.03  0.05  0.22 -0.02  0.04 -0.10  0.17  0.02 -0.20 -0.09
beliefs         0.48  0.40 -0.16 -0.14  0.04 -0.38  0.18  0.09  0.07  0.04 -0.06 -0.09 -0.04
calm            0.68 -0.17  0.01 -0.08 -0.08  0.04  0.08  0.10 -0.04  0.02 -0.01  0.05 -0.07
choices         0.37  0.34  0.36 -0.20  0.06  0.09 -0.25 -0.20  0.12 -0.05  0.17 -0.07 -0.05
communicating   0.11  0.62  0.18  0.14 -0.18  0.30  0.11  0.18  0.15 -0.05 -0.08 -0.01 -0.03
computations   -0.33  0.82 -0.07  0.14 -0.03  0.00 -0.02  0.04  0.03  0.00  0.03 -0.06 -0.03
conscious       0.44  0.10  0.44 -0.11  0.17 -0.11 -0.24  0.06  0.08 -0.19 -0.15 -0.21  0.05
depressed       0.74  0.04 -0.37  0.04 -0.14  0.04 -0.17 -0.04 -0.21 -0.05 -0.02  0.06 -0.03
depth           0.26  0.27  0.48  0.28  0.12 -0.09 -0.16 -0.09  0.04 -0.08 -0.10 -0.13 -0.02
desires         0.66 -0.17  0.10 -0.02 -0.03 -0.02  0.35 -0.48  0.13 -0.14 -0.08  0.02 -0.07
disrespected    0.63  0.06 -0.35  0.16  0.07  0.07 -0.13 -0.03 -0.07 -0.03 -0.07 -0.02  0.02
embarrassed     0.52  0.14 -0.40  0.19  0.48  0.18  0.11  0.11  0.12 -0.03  0.09  0.12  0.07
emo_recog       0.37  0.39 -0.10 -0.10  0.01 -0.27 -0.09  0.10  0.04  0.08 -0.14  0.14  0.11
fear            0.72 -0.39  0.14  0.03 -0.18  0.07  0.09  0.12 -0.03  0.13 -0.04 -0.16  0.15
free_will       0.31  0.30  0.32 -0.40  0.15  0.22 -0.07 -0.19 -0.05  0.27  0.10  0.08  0.00
goal            0.41  0.21  0.19 -0.11  0.07 -0.11  0.18 -0.08  0.02 -0.03  0.07 -0.14  0.15
guilt           0.62  0.14 -0.41  0.21  0.43  0.14  0.04  0.02  0.08  0.00 -0.03 -0.03 -0.05
happy           0.76  0.00 -0.33 -0.08 -0.22  0.08 -0.15 -0.03 -0.08 -0.04 -0.08 -0.04 -0.08
hungry          0.55 -0.71  0.22 -0.03  0.08 -0.02  0.06  0.02  0.03  0.03  0.05  0.07  0.01
intentions      0.19  0.62  0.02 -0.16  0.01  0.07  0.26  0.00 -0.20  0.00  0.09 -0.01  0.18
joy             0.76  0.01 -0.39  0.10 -0.17 -0.01 -0.08 -0.07  0.05  0.00 -0.03  0.09 -0.01
love            0.75  0.11 -0.28  0.09 -0.07 -0.09 -0.07 -0.14 -0.03 -0.08  0.00  0.08  0.07
morality        0.31  0.50 -0.13  0.02 -0.07 -0.19  0.08  0.05 -0.04  0.00  0.18 -0.10  0.10
nauseated       0.65 -0.32  0.14  0.08 -0.16  0.05  0.01 -0.06  0.14  0.03  0.03  0.04  0.05
odors           0.49 -0.35  0.37  0.05  0.15 -0.09 -0.03  0.10  0.07  0.01 -0.03  0.11  0.05
pain            0.63 -0.52  0.19 -0.01 -0.04  0.11  0.11  0.19  0.05 -0.01  0.09 -0.01 -0.14
personality     0.44  0.36 -0.19 -0.13 -0.03 -0.27  0.01  0.00  0.24  0.20 -0.06  0.09 -0.17
pleasure        0.69 -0.23 -0.07  0.15 -0.15 -0.08 -0.15  0.06  0.16 -0.06  0.21  0.09  0.18
pride           0.68  0.18 -0.42  0.08  0.04  0.04  0.01 -0.08 -0.14  0.05 -0.06 -0.16  0.01
reasoning       0.34  0.44  0.31 -0.16  0.01  0.21 -0.11  0.01  0.08  0.20 -0.21  0.09  0.12
recognizing     0.10  0.76  0.12  0.13 -0.21  0.15  0.11  0.11  0.15 -0.02  0.00 -0.02 -0.12
remembering     0.14  0.66  0.16  0.10 -0.15  0.13  0.01 -0.05  0.03 -0.15  0.04  0.09  0.10
safe            0.71 -0.29  0.21 -0.12 -0.03 -0.06  0.04  0.06 -0.03  0.09 -0.13 -0.04  0.07
seeing          0.33  0.15  0.50  0.28  0.08 -0.03 -0.07 -0.01 -0.11 -0.01  0.07  0.09 -0.08
self_aware      0.46  0.18  0.22 -0.30  0.09  0.00  0.12  0.13 -0.20 -0.28 -0.21  0.15 -0.07
self_restraint  0.43  0.35 -0.05 -0.15  0.04 -0.19 -0.08  0.07  0.00  0.02  0.17 -0.04 -0.14
sounds          0.27  0.20  0.42  0.38 -0.06 -0.02  0.06 -0.07 -0.11  0.12 -0.07  0.08  0.01
temperature     0.30  0.19  0.46  0.40  0.05 -0.22  0.04  0.00 -0.26  0.12  0.09  0.06 -0.09
thoughts        0.55  0.18  0.10 -0.37 -0.01  0.04 -0.04  0.10 -0.09 -0.15  0.19  0.09 -0.05
tired           0.69 -0.34  0.23  0.07 -0.06  0.05  0.06  0.08  0.07 -0.07  0.09 -0.11 -0.05
                 h2   u2 com
angry          0.58 0.42 1.8
beliefs        0.64 0.36 4.0
calm           0.54 0.46 1.3
choices        0.59 0.41 6.1
communicating  0.65 0.35 2.6
computations   0.81 0.19 1.4
conscious      0.63 0.37 4.6
depressed      0.79 0.21 2.0
depth          0.53 0.47 4.1
desires        0.87 0.13 2.9
disrespected   0.59 0.41 2.0
embarrassed    0.82 0.18 4.3
emo_recog      0.46 0.54 4.3
fear           0.82 0.18 2.3
free_will      0.65 0.35 6.8
goal           0.36 0.64 4.0
guilt          0.84 0.16 3.3
happy          0.80 0.20 1.8
hungry         0.88 0.12 2.2
intentions     0.60 0.40 2.3
joy            0.79 0.21 1.8
love           0.71 0.29 1.6
morality       0.46 0.54 2.9
nauseated      0.61 0.39 2.0
odors          0.56 0.44 3.4
pain           0.80 0.20 2.7
personality    0.59 0.41 5.2
pleasure       0.72 0.28 2.3
pride          0.74 0.26 2.2
reasoning      0.60 0.40 5.4
recognizing    0.75 0.25 1.7
remembering    0.58 0.42 1.7
safe           0.68 0.32 1.8
seeing         0.50 0.50 3.1
self_aware     0.60 0.40 5.6
self_restraint 0.43 0.57 3.5
sounds         0.48 0.52 4.0
temperature    0.65 0.35 4.8
thoughts       0.57 0.43 2.9
tired          0.70 0.30 2.0

                        MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9 MR10 MR11 MR12 MR13
SS loadings           11.03 5.51 3.15 1.29 0.87 0.84 0.64 0.56 0.51 0.46 0.43 0.38 0.32
Proportion Var         0.28 0.14 0.08 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Var         0.28 0.41 0.49 0.52 0.55 0.57 0.58 0.60 0.61 0.62 0.63 0.64 0.65
Proportion Explained   0.42 0.21 0.12 0.05 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01
Cumulative Proportion  0.42 0.64 0.76 0.81 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99 1.00

Mean item complexity =  3.1
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  27.45 with Chi Square of  5073.12
The degrees of freedom for the model are 338  and the objective function was  2.41 

The root mean square of the residuals (RMSR) is  0.02 
The df corrected root mean square of the residuals is  0.03 

The harmonic number of observations is  196 with the empirical chi square  93.35  with prob <  1 
The total number of observations was  200  with Likelihood Chi Square =  424.01  with prob <  0.001 

Tucker Lewis Index of factoring reliability =  0.951
RMSEA index =  0.046  and the 90 % confidence intervals are  0.024 0.046
BIC =  -1366.82
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9
Correlation of scores with factors             0.99 0.98 0.95 0.88 0.89 0.84 0.83 0.85 0.78
Multiple R square of scores with factors       0.98 0.95 0.91 0.77 0.79 0.70 0.70 0.73 0.61
Minimum correlation of possible factor scores  0.95 0.90 0.82 0.55 0.59 0.40 0.39 0.45 0.23
                                               MR10 MR11 MR12 MR13
Correlation of scores with factors             0.75 0.73 0.74 0.71
Multiple R square of scores with factors       0.57 0.54 0.54 0.50
Minimum correlation of possible factor scores  0.14 0.08 0.08 0.00
Factor Analysis using method =  minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   MR4   MR5   MR6   MR7   MR8   MR9  MR10  MR11  MR12  MR13
angry           0.65 -0.04 -0.11 -0.03  0.05  0.22 -0.02  0.04 -0.10  0.17  0.02 -0.20 -0.09
beliefs         0.48  0.40 -0.16 -0.14  0.04 -0.38  0.18  0.09  0.07  0.04 -0.06 -0.09 -0.04
calm            0.68 -0.17  0.01 -0.08 -0.08  0.04  0.08  0.10 -0.04  0.02 -0.01  0.05 -0.07
choices         0.37  0.34  0.36 -0.20  0.06  0.09 -0.25 -0.20  0.12 -0.05  0.17 -0.07 -0.05
communicating   0.11  0.62  0.18  0.14 -0.18  0.30  0.11  0.18  0.15 -0.05 -0.08 -0.01 -0.03
computations   -0.33  0.82 -0.07  0.14 -0.03  0.00 -0.02  0.04  0.03  0.00  0.03 -0.06 -0.03
conscious       0.44  0.10  0.44 -0.11  0.17 -0.11 -0.24  0.06  0.08 -0.19 -0.15 -0.21  0.05
depressed       0.74  0.04 -0.37  0.04 -0.14  0.04 -0.17 -0.04 -0.21 -0.05 -0.02  0.06 -0.03
depth           0.26  0.27  0.48  0.28  0.12 -0.09 -0.16 -0.09  0.04 -0.08 -0.10 -0.13 -0.02
desires         0.66 -0.17  0.10 -0.02 -0.03 -0.02  0.35 -0.48  0.13 -0.14 -0.08  0.02 -0.07
disrespected    0.63  0.06 -0.35  0.16  0.07  0.07 -0.13 -0.03 -0.07 -0.03 -0.07 -0.02  0.02
embarrassed     0.52  0.14 -0.40  0.19  0.48  0.18  0.11  0.11  0.12 -0.03  0.09  0.12  0.07
emo_recog       0.37  0.39 -0.10 -0.10  0.01 -0.27 -0.09  0.10  0.04  0.08 -0.14  0.14  0.11
fear            0.72 -0.39  0.14  0.03 -0.18  0.07  0.09  0.12 -0.03  0.13 -0.04 -0.16  0.15
free_will       0.31  0.30  0.32 -0.40  0.15  0.22 -0.07 -0.19 -0.05  0.27  0.10  0.08  0.00
goal            0.41  0.21  0.19 -0.11  0.07 -0.11  0.18 -0.08  0.02 -0.03  0.07 -0.14  0.15
guilt           0.62  0.14 -0.41  0.21  0.43  0.14  0.04  0.02  0.08  0.00 -0.03 -0.03 -0.05
happy           0.76  0.00 -0.33 -0.08 -0.22  0.08 -0.15 -0.03 -0.08 -0.04 -0.08 -0.04 -0.08
hungry          0.55 -0.71  0.22 -0.03  0.08 -0.02  0.06  0.02  0.03  0.03  0.05  0.07  0.01
intentions      0.19  0.62  0.02 -0.16  0.01  0.07  0.26  0.00 -0.20  0.00  0.09 -0.01  0.18
joy             0.76  0.01 -0.39  0.10 -0.17 -0.01 -0.08 -0.07  0.05  0.00 -0.03  0.09 -0.01
love            0.75  0.11 -0.28  0.09 -0.07 -0.09 -0.07 -0.14 -0.03 -0.08  0.00  0.08  0.07
morality        0.31  0.50 -0.13  0.02 -0.07 -0.19  0.08  0.05 -0.04  0.00  0.18 -0.10  0.10
nauseated       0.65 -0.32  0.14  0.08 -0.16  0.05  0.01 -0.06  0.14  0.03  0.03  0.04  0.05
odors           0.49 -0.35  0.37  0.05  0.15 -0.09 -0.03  0.10  0.07  0.01 -0.03  0.11  0.05
pain            0.63 -0.52  0.19 -0.01 -0.04  0.11  0.11  0.19  0.05 -0.01  0.09 -0.01 -0.14
personality     0.44  0.36 -0.19 -0.13 -0.03 -0.27  0.01  0.00  0.24  0.20 -0.06  0.09 -0.17
pleasure        0.69 -0.23 -0.07  0.15 -0.15 -0.08 -0.15  0.06  0.16 -0.06  0.21  0.09  0.18
pride           0.68  0.18 -0.42  0.08  0.04  0.04  0.01 -0.08 -0.14  0.05 -0.06 -0.16  0.01
reasoning       0.34  0.44  0.31 -0.16  0.01  0.21 -0.11  0.01  0.08  0.20 -0.21  0.09  0.12
recognizing     0.10  0.76  0.12  0.13 -0.21  0.15  0.11  0.11  0.15 -0.02  0.00 -0.02 -0.12
remembering     0.14  0.66  0.16  0.10 -0.15  0.13  0.01 -0.05  0.03 -0.15  0.04  0.09  0.10
safe            0.71 -0.29  0.21 -0.12 -0.03 -0.06  0.04  0.06 -0.03  0.09 -0.13 -0.04  0.07
seeing          0.33  0.15  0.50  0.28  0.08 -0.03 -0.07 -0.01 -0.11 -0.01  0.07  0.09 -0.08
self_aware      0.46  0.18  0.22 -0.30  0.09  0.00  0.12  0.13 -0.20 -0.28 -0.21  0.15 -0.07
self_restraint  0.43  0.35 -0.05 -0.15  0.04 -0.19 -0.08  0.07  0.00  0.02  0.17 -0.04 -0.14
sounds          0.27  0.20  0.42  0.38 -0.06 -0.02  0.06 -0.07 -0.11  0.12 -0.07  0.08  0.01
temperature     0.30  0.19  0.46  0.40  0.05 -0.22  0.04  0.00 -0.26  0.12  0.09  0.06 -0.09
thoughts        0.55  0.18  0.10 -0.37 -0.01  0.04 -0.04  0.10 -0.09 -0.15  0.19  0.09 -0.05
tired           0.69 -0.34  0.23  0.07 -0.06  0.05  0.06  0.08  0.07 -0.07  0.09 -0.11 -0.05
                 h2   u2 com
angry          0.58 0.42 1.8
beliefs        0.64 0.36 4.0
calm           0.54 0.46 1.3
choices        0.59 0.41 6.1
communicating  0.65 0.35 2.6
computations   0.81 0.19 1.4
conscious      0.63 0.37 4.6
depressed      0.79 0.21 2.0
depth          0.53 0.47 4.1
desires        0.87 0.13 2.9
disrespected   0.59 0.41 2.0
embarrassed    0.82 0.18 4.3
emo_recog      0.46 0.54 4.3
fear           0.82 0.18 2.3
free_will      0.65 0.35 6.8
goal           0.36 0.64 4.0
guilt          0.84 0.16 3.3
happy          0.80 0.20 1.8
hungry         0.88 0.12 2.2
intentions     0.60 0.40 2.3
joy            0.79 0.21 1.8
love           0.71 0.29 1.6
morality       0.46 0.54 2.9
nauseated      0.61 0.39 2.0
odors          0.56 0.44 3.4
pain           0.80 0.20 2.7
personality    0.59 0.41 5.2
pleasure       0.72 0.28 2.3
pride          0.74 0.26 2.2
reasoning      0.60 0.40 5.4
recognizing    0.75 0.25 1.7
remembering    0.58 0.42 1.7
safe           0.68 0.32 1.8
seeing         0.50 0.50 3.1
self_aware     0.60 0.40 5.6
self_restraint 0.43 0.57 3.5
sounds         0.48 0.52 4.0
temperature    0.65 0.35 4.8
thoughts       0.57 0.43 2.9
tired          0.70 0.30 2.0

                        MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9 MR10 MR11 MR12 MR13
SS loadings           11.03 5.51 3.15 1.29 0.87 0.84 0.64 0.56 0.51 0.46 0.43 0.38 0.32
Proportion Var         0.28 0.14 0.08 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Var         0.28 0.41 0.49 0.52 0.55 0.57 0.58 0.60 0.61 0.62 0.63 0.64 0.65
Proportion Explained   0.42 0.21 0.12 0.05 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01
Cumulative Proportion  0.42 0.64 0.76 0.81 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99 1.00

Mean item complexity =  3.1
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  27.45 with Chi Square of  5073.12
The degrees of freedom for the model are 338  and the objective function was  2.41 

The root mean square of the residuals (RMSR) is  0.02 
The df corrected root mean square of the residuals is  0.03 

The harmonic number of observations is  196 with the empirical chi square  93.35  with prob <  1 
The total number of observations was  200  with Likelihood Chi Square =  424.01  with prob <  0.001 

Tucker Lewis Index of factoring reliability =  0.951
RMSEA index =  0.046  and the 90 % confidence intervals are  0.024 0.046
BIC =  -1366.82
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9
Correlation of scores with factors             0.99 0.98 0.95 0.88 0.89 0.84 0.83 0.85 0.78
Multiple R square of scores with factors       0.98 0.95 0.91 0.77 0.79 0.70 0.70 0.73 0.61
Minimum correlation of possible factor scores  0.95 0.90 0.82 0.55 0.59 0.40 0.39 0.45 0.23
                                               MR10 MR11 MR12 MR13
Correlation of scores with factors             0.75 0.73 0.74 0.71
Multiple R square of scores with factors       0.57 0.54 0.54 0.50
Minimum correlation of possible factor scores  0.14 0.08 0.08 0.00
[1] 3
[1] 3

Step 2: Run EFA with varimax rotation

Factor Analysis using method =  minres
Call: fa(r = d1_all, nfactors = nfactors_d1_all, rotate = chosenRotType, 
    fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   h2   u2 com
angry           0.51  0.38  0.14 0.43 0.57 2.0
beliefs         0.55 -0.05  0.30 0.40 0.60 1.6
calm            0.43  0.54  0.16 0.50 0.50 2.1
choices         0.14  0.08  0.58 0.36 0.64 1.2
communicating   0.15 -0.32  0.53 0.41 0.59 1.8
computations    0.06 -0.83  0.33 0.80 0.20 1.3
conscious       0.07  0.32  0.52 0.37 0.63 1.7
depressed       0.77  0.29  0.04 0.68 0.32 1.3
depth          -0.04  0.10  0.58 0.35 0.65 1.1
desires         0.35  0.52  0.21 0.44 0.56 2.1
disrespected    0.69  0.22  0.03 0.53 0.47 1.2
embarrassed     0.62  0.09  0.01 0.39 0.61 1.0
emo_recog       0.44 -0.09  0.30 0.29 0.71 1.9
fear            0.31  0.75  0.13 0.68 0.32 1.4
free_will       0.12  0.06  0.49 0.25 0.75 1.1
goal            0.23  0.14  0.42 0.25 0.75 1.8
guilt           0.71  0.14  0.04 0.53 0.47 1.1
happy           0.75  0.35  0.05 0.68 0.32 1.4
hungry          0.03  0.93 -0.06 0.87 0.13 1.0
intentions      0.31 -0.33  0.45 0.41 0.59 2.6
joy             0.79  0.31  0.01 0.73 0.27 1.3
love            0.75  0.28  0.15 0.66 0.34 1.4
morality        0.45 -0.22  0.32 0.36 0.64 2.3
nauseated       0.27  0.67  0.15 0.54 0.46 1.4
odors           0.01  0.66  0.24 0.50 0.50 1.2
pain            0.17  0.81  0.06 0.70 0.30 1.1
personality     0.53 -0.06  0.25 0.34 0.66 1.4
pleasure        0.46  0.55  0.07 0.51 0.49 2.0
pride           0.81  0.14  0.07 0.68 0.32 1.1
reasoning       0.18 -0.02  0.60 0.39 0.61 1.2
recognizing     0.22 -0.45  0.58 0.59 0.41 2.2
remembering     0.19 -0.35  0.57 0.48 0.52 1.9
safe            0.29  0.70  0.24 0.63 0.37 1.6
seeing         -0.04  0.24  0.56 0.37 0.63 1.4
self_aware      0.23  0.21  0.41 0.27 0.73 2.1
self_restraint  0.44 -0.01  0.34 0.30 0.70 1.9
sounds         -0.01  0.14  0.50 0.27 0.73 1.2
temperature    -0.01  0.18  0.52 0.30 0.70 1.2
thoughts        0.38  0.22  0.37 0.33 0.67 2.6
tired           0.24  0.74  0.22 0.64 0.36 1.4

                       MR1  MR2  MR3
SS loadings           7.18 7.13 4.91
Proportion Var        0.18 0.18 0.12
Cumulative Var        0.18 0.36 0.48
Proportion Explained  0.37 0.37 0.26
Cumulative Proportion 0.37 0.74 1.00

Mean item complexity =  1.6
Test of the hypothesis that 3 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  27.45 with Chi Square of  5073.12
The degrees of freedom for the model are 663  and the objective function was  6.67 

The root mean square of the residuals (RMSR) is  0.05 
The df corrected root mean square of the residuals is  0.05 

The harmonic number of observations is  196 with the empirical chi square  729.79  with prob <  0.036 
The total number of observations was  200  with Likelihood Chi Square =  1219.34  with prob <  2.1e-35 

Tucker Lewis Index of factoring reliability =  0.846
RMSEA index =  0.071  and the 90 % confidence intervals are  0.059 NA
BIC =  -2293.44
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy             
                                                MR1  MR2  MR3
Correlation of scores with factors             0.96 0.98 0.94
Multiple R square of scores with factors       0.93 0.96 0.88
Minimum correlation of possible factor scores  0.85 0.91 0.76

back to TOC

Factor loadings table

Study 2

Study information:

Demographics

Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector

back to TOC

Exploratory factor analysis

Step 1: Run maximal EFA (without and with rotation)

Parallel analysis suggests that the number of factors =  3  and the number of components =  3 

Factor Analysis using method =  minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   MR4   MR5   MR6   MR7   MR8   MR9  MR10  MR11  MR12  MR13
angry           0.57 -0.17 -0.04 -0.07  0.05  0.16  0.11  0.06 -0.04  0.01 -0.04  0.02 -0.16
beliefs         0.54  0.23 -0.07 -0.09  0.05  0.24 -0.12 -0.05 -0.01  0.13  0.06  0.08  0.21
calm            0.55 -0.07  0.01  0.02 -0.10 -0.09 -0.14  0.05 -0.01 -0.18  0.10 -0.02  0.10
choices         0.43  0.05  0.26 -0.38 -0.07  0.20 -0.05 -0.13  0.11  0.05 -0.15  0.16 -0.09
communicating   0.09  0.30  0.16  0.30 -0.17  0.03  0.19  0.11  0.29  0.04  0.04 -0.02 -0.12
computations   -0.01  0.80 -0.04  0.02  0.08  0.10 -0.09  0.03  0.10 -0.11  0.08  0.10  0.00
conscious       0.36  0.08  0.48  0.21 -0.14  0.01  0.16 -0.12 -0.27 -0.14 -0.04 -0.12  0.01
depressed       0.69 -0.11 -0.13  0.05 -0.06 -0.13  0.12  0.06  0.21 -0.09 -0.15 -0.01  0.00
depth           0.14  0.22  0.36  0.12  0.34  0.02 -0.14 -0.07 -0.02  0.02  0.17 -0.15 -0.07
desires         0.52 -0.19 -0.03 -0.01 -0.08  0.21 -0.07 -0.04  0.02  0.10  0.03 -0.17  0.15
disrespected    0.69  0.00 -0.11 -0.07 -0.03 -0.02  0.16 -0.16 -0.09  0.03  0.10  0.09  0.08
embarrassed     0.53  0.03 -0.30  0.10  0.22  0.34  0.23 -0.06 -0.01 -0.03  0.02 -0.13 -0.05
emo_recog       0.34  0.50 -0.05  0.09  0.11 -0.07  0.22  0.14 -0.09  0.07 -0.02  0.13  0.05
fear            0.55 -0.37  0.11  0.11 -0.08  0.03  0.01  0.17  0.09  0.03 -0.06 -0.25 -0.09
free_will       0.49  0.00  0.32 -0.22 -0.09  0.11 -0.21 -0.18  0.08  0.03 -0.02 -0.03 -0.10
goal            0.35  0.31 -0.03 -0.09 -0.06  0.10 -0.11  0.22  0.02 -0.18 -0.25 -0.04  0.14
guilt           0.58  0.07 -0.18  0.13  0.25  0.19 -0.07 -0.10 -0.07 -0.08  0.14 -0.05 -0.03
happy           0.72  0.09 -0.20  0.18 -0.20 -0.06 -0.01 -0.13  0.09 -0.03  0.12  0.05 -0.09
hungry          0.38 -0.77  0.22  0.02  0.14 -0.04  0.01 -0.08  0.06  0.05  0.00  0.03  0.01
intentions      0.35  0.40  0.15 -0.24  0.11  0.03  0.02 -0.12  0.09 -0.14  0.08  0.05 -0.12
joy             0.70  0.00 -0.26  0.10 -0.18 -0.10 -0.03 -0.05  0.06 -0.01  0.05  0.11  0.02
love            0.60  0.03 -0.20  0.11  0.03 -0.11  0.09 -0.19 -0.05  0.05  0.07  0.03  0.14
morality        0.44  0.37 -0.13 -0.08  0.21 -0.26 -0.05  0.26 -0.18  0.33  0.07  0.03 -0.09
nauseated       0.30 -0.43  0.06  0.11  0.27  0.05  0.00  0.07  0.16  0.06 -0.10  0.02  0.08
odors           0.15 -0.53  0.38  0.06  0.09  0.12 -0.06  0.16  0.06  0.03  0.19  0.09 -0.06
pain            0.45 -0.64  0.21 -0.06  0.07 -0.09 -0.05 -0.04 -0.01  0.10 -0.01  0.06  0.08
personality     0.54  0.29 -0.01 -0.12  0.20  0.12  0.01  0.18 -0.01  0.06 -0.09  0.00  0.09
pleasure        0.60  0.04 -0.18  0.10 -0.23 -0.17 -0.31  0.04  0.01 -0.04  0.08 -0.09 -0.02
pride           0.68  0.14 -0.31  0.06 -0.05 -0.02  0.01 -0.04 -0.01 -0.04 -0.03  0.01 -0.15
reasoning       0.23  0.28  0.36  0.05 -0.16 -0.01 -0.05  0.01  0.05  0.12 -0.06 -0.11  0.22
recognizing     0.20  0.32  0.13  0.10  0.11  0.00 -0.11  0.21  0.06  0.00  0.04 -0.14  0.05
remembering     0.06  0.58  0.17  0.13 -0.05  0.00  0.01 -0.17  0.19  0.28 -0.24 -0.03 -0.08
safe            0.58 -0.08  0.23  0.06 -0.06 -0.06 -0.19  0.16 -0.24  0.00 -0.10  0.09 -0.22
seeing         -0.07  0.13  0.26 -0.03 -0.19 -0.08  0.19 -0.08  0.02  0.27  0.20 -0.08  0.02
self_aware      0.27  0.21  0.46 -0.03 -0.10  0.09  0.23  0.00 -0.31 -0.10 -0.09 -0.03  0.01
self_restraint  0.34  0.19  0.15 -0.56  0.11 -0.33  0.20  0.05  0.17 -0.16  0.15 -0.19  0.01
sounds         -0.07  0.10  0.40  0.10 -0.18  0.23  0.08  0.23  0.14 -0.08  0.25  0.23  0.06
temperature    -0.05  0.34  0.41  0.31  0.34 -0.26 -0.15 -0.23  0.08 -0.15 -0.09  0.08  0.04
thoughts        0.57  0.01  0.18 -0.05 -0.11 -0.16 -0.03  0.03 -0.09  0.03 -0.03  0.15  0.08
tired           0.39 -0.35  0.07  0.11  0.16 -0.16  0.24  0.06  0.12 -0.07 -0.11  0.12  0.05
                 h2   u2 com
angry          0.44 0.56 1.7
beliefs        0.50 0.50 2.8
calm           0.40 0.60 1.8
choices        0.54 0.46 4.6
communicating  0.40 0.60 5.9
computations   0.71 0.29 1.2
conscious      0.58 0.42 4.2
depressed      0.63 0.37 1.7
depth          0.41 0.59 4.8
desires        0.42 0.58 2.3
disrespected   0.58 0.42 1.4
embarrassed    0.63 0.37 3.7
emo_recog      0.49 0.51 3.1
fear           0.58 0.42 2.9
free_will      0.51 0.49 3.5
goal           0.42 0.58 5.4
guilt          0.53 0.47 2.4
happy          0.69 0.31 1.8
hungry         0.81 0.19 1.8
intentions     0.43 0.57 4.2
joy            0.62 0.38 1.6
love           0.50 0.50 1.9
morality       0.69 0.31 5.9
nauseated      0.42 0.58 3.6
odors          0.55 0.45 3.0
pain           0.70 0.30 2.3
personality    0.50 0.50 2.6
pleasure       0.60 0.40 2.5
pride          0.61 0.39 1.7
reasoning      0.37 0.63 4.8
recognizing    0.26 0.74 4.7
remembering    0.59 0.41 2.8
safe           0.59 0.41 2.8
seeing         0.30 0.70 6.0
self_aware     0.52 0.48 4.2
self_restraint 0.76 0.24 4.5
sounds         0.47 0.53 5.6
temperature    0.68 0.32 6.4
thoughts       0.44 0.56 1.8
tired          0.45 0.55 4.7

                       MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9 MR10 MR11 MR12 MR13
SS loadings           8.25 4.13 2.18 1.05 0.96 0.84 0.73 0.66 0.62 0.54 0.52 0.44 0.40
Proportion Var        0.21 0.10 0.05 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var        0.21 0.31 0.36 0.39 0.41 0.44 0.45 0.47 0.49 0.50 0.51 0.52 0.53
Proportion Explained  0.39 0.19 0.10 0.05 0.05 0.04 0.03 0.03 0.03 0.03 0.02 0.02 0.02
Cumulative Proportion 0.39 0.58 0.68 0.73 0.78 0.82 0.85 0.88 0.91 0.94 0.96 0.98 1.00

Mean item complexity =  3.4
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  17.08 with Chi Square of  3157.08
The degrees of freedom for the model are 338  and the objective function was  1.79 

The root mean square of the residuals (RMSR) is  0.02 
The df corrected root mean square of the residuals is  0.03 

The harmonic number of observations is  198 with the empirical chi square  142.71  with prob <  1 
The total number of observations was  200  with Likelihood Chi Square =  314.7  with prob <  0.81 

Tucker Lewis Index of factoring reliability =  1.024
RMSEA index =  0.016  and the 90 % confidence intervals are  0 0.018
BIC =  -1476.13
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9
Correlation of scores with factors             0.98 0.96 0.91 0.86 0.83 0.83 0.79 0.77 0.77
Multiple R square of scores with factors       0.95 0.93 0.83 0.74 0.69 0.68 0.62 0.60 0.59
Minimum correlation of possible factor scores  0.90 0.86 0.67 0.48 0.38 0.36 0.23 0.19 0.18
                                               MR10 MR11 MR12  MR13
Correlation of scores with factors             0.75 0.73 0.71  0.67
Multiple R square of scores with factors       0.56 0.53 0.50  0.45
Minimum correlation of possible factor scores  0.12 0.06 0.00 -0.10
Factor Analysis using method =  minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   MR4   MR5   MR6   MR7   MR8   MR9  MR10  MR11  MR12  MR13
angry           0.57 -0.17 -0.04 -0.07  0.05  0.16  0.11  0.06 -0.04  0.01 -0.04  0.02 -0.16
beliefs         0.54  0.23 -0.07 -0.09  0.05  0.24 -0.12 -0.05 -0.01  0.13  0.06  0.08  0.21
calm            0.55 -0.07  0.01  0.02 -0.10 -0.09 -0.14  0.05 -0.01 -0.18  0.10 -0.02  0.10
choices         0.43  0.05  0.26 -0.38 -0.07  0.20 -0.05 -0.13  0.11  0.05 -0.15  0.16 -0.09
communicating   0.09  0.30  0.16  0.30 -0.17  0.03  0.19  0.11  0.29  0.04  0.04 -0.02 -0.12
computations   -0.01  0.80 -0.04  0.02  0.08  0.10 -0.09  0.03  0.10 -0.11  0.08  0.10  0.00
conscious       0.36  0.08  0.48  0.21 -0.14  0.01  0.16 -0.12 -0.27 -0.14 -0.04 -0.12  0.01
depressed       0.69 -0.11 -0.13  0.05 -0.06 -0.13  0.12  0.06  0.21 -0.09 -0.15 -0.01  0.00
depth           0.14  0.22  0.36  0.12  0.34  0.02 -0.14 -0.07 -0.02  0.02  0.17 -0.15 -0.07
desires         0.52 -0.19 -0.03 -0.01 -0.08  0.21 -0.07 -0.04  0.02  0.10  0.03 -0.17  0.15
disrespected    0.69  0.00 -0.11 -0.07 -0.03 -0.02  0.16 -0.16 -0.09  0.03  0.10  0.09  0.08
embarrassed     0.53  0.03 -0.30  0.10  0.22  0.34  0.23 -0.06 -0.01 -0.03  0.02 -0.13 -0.05
emo_recog       0.34  0.50 -0.05  0.09  0.11 -0.07  0.22  0.14 -0.09  0.07 -0.02  0.13  0.05
fear            0.55 -0.37  0.11  0.11 -0.08  0.03  0.01  0.17  0.09  0.03 -0.06 -0.25 -0.09
free_will       0.49  0.00  0.32 -0.22 -0.09  0.11 -0.21 -0.18  0.08  0.03 -0.02 -0.03 -0.10
goal            0.35  0.31 -0.03 -0.09 -0.06  0.10 -0.11  0.22  0.02 -0.18 -0.25 -0.04  0.14
guilt           0.58  0.07 -0.18  0.13  0.25  0.19 -0.07 -0.10 -0.07 -0.08  0.14 -0.05 -0.03
happy           0.72  0.09 -0.20  0.18 -0.20 -0.06 -0.01 -0.13  0.09 -0.03  0.12  0.05 -0.09
hungry          0.38 -0.77  0.22  0.02  0.14 -0.04  0.01 -0.08  0.06  0.05  0.00  0.03  0.01
intentions      0.35  0.40  0.15 -0.24  0.11  0.03  0.02 -0.12  0.09 -0.14  0.08  0.05 -0.12
joy             0.70  0.00 -0.26  0.10 -0.18 -0.10 -0.03 -0.05  0.06 -0.01  0.05  0.11  0.02
love            0.60  0.03 -0.20  0.11  0.03 -0.11  0.09 -0.19 -0.05  0.05  0.07  0.03  0.14
morality        0.44  0.37 -0.13 -0.08  0.21 -0.26 -0.05  0.26 -0.18  0.33  0.07  0.03 -0.09
nauseated       0.30 -0.43  0.06  0.11  0.27  0.05  0.00  0.07  0.16  0.06 -0.10  0.02  0.08
odors           0.15 -0.53  0.38  0.06  0.09  0.12 -0.06  0.16  0.06  0.03  0.19  0.09 -0.06
pain            0.45 -0.64  0.21 -0.06  0.07 -0.09 -0.05 -0.04 -0.01  0.10 -0.01  0.06  0.08
personality     0.54  0.29 -0.01 -0.12  0.20  0.12  0.01  0.18 -0.01  0.06 -0.09  0.00  0.09
pleasure        0.60  0.04 -0.18  0.10 -0.23 -0.17 -0.31  0.04  0.01 -0.04  0.08 -0.09 -0.02
pride           0.68  0.14 -0.31  0.06 -0.05 -0.02  0.01 -0.04 -0.01 -0.04 -0.03  0.01 -0.15
reasoning       0.23  0.28  0.36  0.05 -0.16 -0.01 -0.05  0.01  0.05  0.12 -0.06 -0.11  0.22
recognizing     0.20  0.32  0.13  0.10  0.11  0.00 -0.11  0.21  0.06  0.00  0.04 -0.14  0.05
remembering     0.06  0.58  0.17  0.13 -0.05  0.00  0.01 -0.17  0.19  0.28 -0.24 -0.03 -0.08
safe            0.58 -0.08  0.23  0.06 -0.06 -0.06 -0.19  0.16 -0.24  0.00 -0.10  0.09 -0.22
seeing         -0.07  0.13  0.26 -0.03 -0.19 -0.08  0.19 -0.08  0.02  0.27  0.20 -0.08  0.02
self_aware      0.27  0.21  0.46 -0.03 -0.10  0.09  0.23  0.00 -0.31 -0.10 -0.09 -0.03  0.01
self_restraint  0.34  0.19  0.15 -0.56  0.11 -0.33  0.20  0.05  0.17 -0.16  0.15 -0.19  0.01
sounds         -0.07  0.10  0.40  0.10 -0.18  0.23  0.08  0.23  0.14 -0.08  0.25  0.23  0.06
temperature    -0.05  0.34  0.41  0.31  0.34 -0.26 -0.15 -0.23  0.08 -0.15 -0.09  0.08  0.04
thoughts        0.57  0.01  0.18 -0.05 -0.11 -0.16 -0.03  0.03 -0.09  0.03 -0.03  0.15  0.08
tired           0.39 -0.35  0.07  0.11  0.16 -0.16  0.24  0.06  0.12 -0.07 -0.11  0.12  0.05
                 h2   u2 com
angry          0.44 0.56 1.7
beliefs        0.50 0.50 2.8
calm           0.40 0.60 1.8
choices        0.54 0.46 4.6
communicating  0.40 0.60 5.9
computations   0.71 0.29 1.2
conscious      0.58 0.42 4.2
depressed      0.63 0.37 1.7
depth          0.41 0.59 4.8
desires        0.42 0.58 2.3
disrespected   0.58 0.42 1.4
embarrassed    0.63 0.37 3.7
emo_recog      0.49 0.51 3.1
fear           0.58 0.42 2.9
free_will      0.51 0.49 3.5
goal           0.42 0.58 5.4
guilt          0.53 0.47 2.4
happy          0.69 0.31 1.8
hungry         0.81 0.19 1.8
intentions     0.43 0.57 4.2
joy            0.62 0.38 1.6
love           0.50 0.50 1.9
morality       0.69 0.31 5.9
nauseated      0.42 0.58 3.6
odors          0.55 0.45 3.0
pain           0.70 0.30 2.3
personality    0.50 0.50 2.6
pleasure       0.60 0.40 2.5
pride          0.61 0.39 1.7
reasoning      0.37 0.63 4.8
recognizing    0.26 0.74 4.7
remembering    0.59 0.41 2.8
safe           0.59 0.41 2.8
seeing         0.30 0.70 6.0
self_aware     0.52 0.48 4.2
self_restraint 0.76 0.24 4.5
sounds         0.47 0.53 5.6
temperature    0.68 0.32 6.4
thoughts       0.44 0.56 1.8
tired          0.45 0.55 4.7

                       MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9 MR10 MR11 MR12 MR13
SS loadings           8.25 4.13 2.18 1.05 0.96 0.84 0.73 0.66 0.62 0.54 0.52 0.44 0.40
Proportion Var        0.21 0.10 0.05 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var        0.21 0.31 0.36 0.39 0.41 0.44 0.45 0.47 0.49 0.50 0.51 0.52 0.53
Proportion Explained  0.39 0.19 0.10 0.05 0.05 0.04 0.03 0.03 0.03 0.03 0.02 0.02 0.02
Cumulative Proportion 0.39 0.58 0.68 0.73 0.78 0.82 0.85 0.88 0.91 0.94 0.96 0.98 1.00

Mean item complexity =  3.4
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  17.08 with Chi Square of  3157.08
The degrees of freedom for the model are 338  and the objective function was  1.79 

The root mean square of the residuals (RMSR) is  0.02 
The df corrected root mean square of the residuals is  0.03 

The harmonic number of observations is  198 with the empirical chi square  142.71  with prob <  1 
The total number of observations was  200  with Likelihood Chi Square =  314.7  with prob <  0.81 

Tucker Lewis Index of factoring reliability =  1.024
RMSEA index =  0.016  and the 90 % confidence intervals are  0 0.018
BIC =  -1476.13
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9
Correlation of scores with factors             0.98 0.96 0.91 0.86 0.83 0.83 0.79 0.77 0.77
Multiple R square of scores with factors       0.95 0.93 0.83 0.74 0.69 0.68 0.62 0.60 0.59
Minimum correlation of possible factor scores  0.90 0.86 0.67 0.48 0.38 0.36 0.23 0.19 0.18
                                               MR10 MR11 MR12  MR13
Correlation of scores with factors             0.75 0.73 0.71  0.67
Multiple R square of scores with factors       0.56 0.53 0.50  0.45
Minimum correlation of possible factor scores  0.12 0.06 0.00 -0.10
[1] 3
[1] 3

Step 2: Run EFA with varimax rotation

Factor Analysis using method =  minres
Call: fa(r = d2_all, nfactors = nfactors_d2_all, rotate = chosenRotType, 
    fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3    h2   u2 com
angry           0.50  0.32  0.03 0.356 0.64 1.7
beliefs         0.55 -0.04  0.19 0.336 0.66 1.3
calm            0.48  0.24  0.12 0.299 0.70 1.6
choices         0.29  0.19  0.33 0.231 0.77 2.6
communicating   0.08 -0.17  0.28 0.111 0.89 1.8
computations    0.16 -0.71  0.35 0.650 0.35 1.6
conscious       0.16  0.22  0.51 0.331 0.67 1.6
depressed       0.65  0.28  0.02 0.504 0.50 1.4
depth           0.04  0.00  0.43 0.182 0.82 1.0
desires         0.44  0.33  0.02 0.301 0.70 1.8
disrespected    0.67  0.20  0.09 0.488 0.51 1.2
embarrassed     0.58  0.05 -0.09 0.346 0.65 1.1
emo_recog       0.42 -0.32  0.28 0.360 0.64 2.7
fear            0.38  0.54  0.07 0.441 0.56 1.8
free_will       0.32  0.28  0.39 0.331 0.67 2.8
goal            0.38 -0.15  0.21 0.212 0.79 1.9
guilt           0.59  0.07  0.04 0.358 0.64 1.0
happy           0.74  0.09  0.05 0.555 0.44 1.0
hungry          0.11  0.88 -0.08 0.786 0.21 1.0
intentions      0.33 -0.16  0.39 0.293 0.71 2.3
joy             0.73  0.14 -0.04 0.555 0.44 1.1
love            0.63  0.11  0.00 0.403 0.60 1.1
morality        0.49 -0.19  0.18 0.306 0.69 1.6
nauseated       0.17  0.49 -0.08 0.270 0.73 1.3
odors          -0.11  0.63  0.11 0.425 0.57 1.1
pain            0.21  0.79  0.00 0.662 0.34 1.1
personality     0.54 -0.06  0.27 0.372 0.63 1.5
pleasure        0.60  0.11  0.02 0.375 0.63 1.1
pride           0.77 -0.01 -0.03 0.594 0.41 1.0
reasoning       0.13 -0.02  0.50 0.265 0.73 1.1
recognizing     0.19 -0.15  0.31 0.154 0.85 2.2
remembering     0.10 -0.40  0.41 0.333 0.67 2.1
safe            0.41  0.34  0.30 0.380 0.62 2.8
seeing         -0.13 -0.04  0.25 0.083 0.92 1.6
self_aware      0.11  0.07  0.53 0.303 0.70 1.1
self_restraint  0.28  0.01  0.26 0.144 0.86 2.0
sounds         -0.18  0.03  0.33 0.144 0.86 1.5
temperature    -0.11 -0.15  0.42 0.212 0.79 1.4
thoughts        0.45  0.25  0.31 0.364 0.64 2.4
tired           0.26  0.45 -0.01 0.266 0.73 1.6

                       MR1  MR2  MR3
SS loadings           7.06 4.23 2.79
Proportion Var        0.18 0.11 0.07
Cumulative Var        0.18 0.28 0.35
Proportion Explained  0.50 0.30 0.20
Cumulative Proportion 0.50 0.80 1.00

Mean item complexity =  1.6
Test of the hypothesis that 3 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  17.08 with Chi Square of  3157.08
The degrees of freedom for the model are 663  and the objective function was  4.79 

The root mean square of the residuals (RMSR) is  0.05 
The df corrected root mean square of the residuals is  0.05 

The harmonic number of observations is  198 with the empirical chi square  788.89  with prob <  0.00052 
The total number of observations was  200  with Likelihood Chi Square =  874.92  with prob <  5.4e-08 

Tucker Lewis Index of factoring reliability =  0.894
RMSEA index =  0.047  and the 90 % confidence intervals are  0.032 0.047
BIC =  -2637.86
Fit based upon off diagonal values = 0.95
Measures of factor score adequacy             
                                                MR1  MR2  MR3
Correlation of scores with factors             0.96 0.96 0.88
Multiple R square of scores with factors       0.91 0.91 0.78
Minimum correlation of possible factor scores  0.82 0.83 0.56

back to TOC

Factor loadings table

Study 3

Study information:

Demographics

back to TOC

Exploratory factor analysis

Step 1: Run maximal EFA (without and with rotation)

Parallel analysis suggests that the number of factors =  3  and the number of components =  3 

Factor Analysis using method =  minres
Call: fa(r = d3_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
              MR1   MR2   MR3   MR4   MR5   MR6   MR7   MR8   MR9  MR10  MR11  MR12  MR13
angry        0.80 -0.10 -0.04 -0.13 -0.05 -0.12 -0.41 -0.12  0.26 -0.21  0.07 -0.11 -0.06
choices      0.54  0.43  0.21 -0.17 -0.20  0.03 -0.01  0.02 -0.08  0.01 -0.17 -0.02 -0.05
conscious    0.50  0.45  0.11  0.24  0.47 -0.46 -0.13 -0.07 -0.08  0.09 -0.03  0.01  0.03
depressed    0.69 -0.24  0.22  0.09 -0.19 -0.18  0.00  0.03  0.13 -0.05 -0.06 -0.01  0.04
depth        0.35  0.57  0.01  0.62 -0.04  0.32  0.00  0.01  0.22  0.02 -0.03 -0.01  0.02
disrespected 0.60 -0.24  0.31  0.11 -0.06 -0.17  0.16  0.20  0.12 -0.03  0.09  0.02  0.08
embarrassed  0.53 -0.18  0.42  0.15  0.02  0.20 -0.05  0.11 -0.05 -0.02  0.16  0.11 -0.06
fear         0.81 -0.14 -0.28 -0.02  0.07  0.14  0.01 -0.01 -0.05 -0.07  0.06 -0.13 -0.03
guilt        0.54 -0.36  0.50 -0.20  0.37  0.29 -0.06  0.05  0.10  0.08 -0.20 -0.03  0.01
happy        0.67 -0.19  0.03 -0.03 -0.25 -0.10  0.06 -0.19  0.02  0.17 -0.12  0.03 -0.05
hungry       0.75  0.00 -0.56 -0.07  0.11  0.06 -0.04  0.05  0.05  0.10  0.02  0.22 -0.18
love         0.64 -0.25  0.07  0.03  0.14  0.02  0.30  0.05 -0.20 -0.04  0.08 -0.13 -0.01
nauseated    0.50  0.06 -0.17 -0.08 -0.12 -0.17  0.02  0.46  0.05 -0.01 -0.07  0.09  0.07
odors        0.64  0.03 -0.47 -0.20  0.10  0.10  0.06 -0.03  0.16  0.21  0.08 -0.07  0.20
pain         0.76 -0.16 -0.36  0.18 -0.04  0.10 -0.11 -0.08 -0.30 -0.22 -0.13  0.06  0.15
pride        0.70 -0.27  0.27  0.04 -0.16 -0.03  0.01 -0.31 -0.08  0.13  0.09  0.13  0.06
reasoning    0.41  0.69  0.12 -0.28  0.05  0.01  0.39 -0.19  0.14 -0.20  0.01  0.08  0.02
remembering  0.32  0.52  0.29 -0.28  0.03  0.13 -0.25  0.09 -0.18 -0.02  0.11  0.08  0.05
temperature  0.39  0.49  0.07 -0.04 -0.26  0.00 -0.10  0.07 -0.14  0.18  0.05 -0.17  0.00
tired        0.76  0.06 -0.10  0.06  0.03 -0.05  0.17  0.05 -0.09 -0.01 -0.01 -0.10 -0.18
               h2     u2 com
angry        1.00 0.0032 2.3
choices      0.63 0.3732 3.2
conscious    1.00 0.0049 4.9
depressed    0.68 0.3184 2.0
depth        1.00 0.0044 3.5
disrespected 0.66 0.3437 2.9
embarrassed  0.61 0.3919 3.3
fear         0.82 0.1845 1.5
guilt        0.99 0.0051 5.2
happy        0.65 0.3508 2.0
hungry       1.00 0.0042 2.4
love         0.65 0.3483 2.4
nauseated    0.56 0.4372 2.9
odors        0.82 0.1805 3.0
pain         0.98 0.0206 2.6
pride        0.82 0.1822 2.5
reasoning    1.00 0.0048 3.4
remembering  0.68 0.3218 4.5
temperature  0.56 0.4351 3.6
tired        0.68 0.3177 1.4

                       MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9 MR10 MR11 MR12 MR13
SS loadings           7.52 2.22 1.59 0.82 0.66 0.62 0.58 0.48 0.43 0.29 0.19 0.19 0.16
Proportion Var        0.38 0.11 0.08 0.04 0.03 0.03 0.03 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var        0.38 0.49 0.57 0.61 0.64 0.67 0.70 0.73 0.75 0.76 0.77 0.78 0.79
Proportion Explained  0.48 0.14 0.10 0.05 0.04 0.04 0.04 0.03 0.03 0.02 0.01 0.01 0.01
Cumulative Proportion 0.48 0.62 0.72 0.77 0.81 0.85 0.89 0.92 0.95 0.97 0.98 0.99 1.00

Mean item complexity =  3
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  190  and the objective function was  11.71 with Chi Square of  1399.04
The degrees of freedom for the model are 8  and the objective function was  0.05 

The root mean square of the residuals (RMSR) is  0 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  128 with the empirical chi square  0.82  with prob <  1 
The total number of observations was  128  with Likelihood Chi Square =  5.27  with prob <  0.73 

Tucker Lewis Index of factoring reliability =  1.059
RMSEA index =  0  and the 90 % confidence intervals are  0 0.077
BIC =  -33.55
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9
Correlation of scores with factors             0.99 0.97 0.97 0.97 0.94 0.96 0.94 0.81 0.91
Multiple R square of scores with factors       0.98 0.95 0.95 0.94 0.87 0.92 0.88 0.66 0.84
Minimum correlation of possible factor scores  0.96 0.90 0.89 0.89 0.75 0.84 0.75 0.31 0.67
                                               MR10 MR11 MR12 MR13
Correlation of scores with factors             0.88 0.73 0.77 0.76
Multiple R square of scores with factors       0.78 0.53 0.60 0.58
Minimum correlation of possible factor scores  0.55 0.05 0.19 0.16
Factor Analysis using method =  minres
Call: fa(r = d3_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
              MR1   MR2   MR3   MR4   MR5   MR6   MR7   MR8   MR9  MR10  MR11  MR12  MR13
angry        0.80 -0.10 -0.04 -0.13 -0.05 -0.12 -0.41 -0.12  0.26 -0.21  0.07 -0.11 -0.06
choices      0.54  0.43  0.21 -0.17 -0.20  0.03 -0.01  0.02 -0.08  0.01 -0.17 -0.02 -0.05
conscious    0.50  0.45  0.11  0.24  0.47 -0.46 -0.13 -0.07 -0.08  0.09 -0.03  0.01  0.03
depressed    0.69 -0.24  0.22  0.09 -0.19 -0.18  0.00  0.03  0.13 -0.05 -0.06 -0.01  0.04
depth        0.35  0.57  0.01  0.62 -0.04  0.32  0.00  0.01  0.22  0.02 -0.03 -0.01  0.02
disrespected 0.60 -0.24  0.31  0.11 -0.06 -0.17  0.16  0.20  0.12 -0.03  0.09  0.02  0.08
embarrassed  0.53 -0.18  0.42  0.15  0.02  0.20 -0.05  0.11 -0.05 -0.02  0.16  0.11 -0.06
fear         0.81 -0.14 -0.28 -0.02  0.07  0.14  0.01 -0.01 -0.05 -0.07  0.06 -0.13 -0.03
guilt        0.54 -0.36  0.50 -0.20  0.37  0.29 -0.06  0.05  0.10  0.08 -0.20 -0.03  0.01
happy        0.67 -0.19  0.03 -0.03 -0.25 -0.10  0.06 -0.19  0.02  0.17 -0.12  0.03 -0.05
hungry       0.75  0.00 -0.56 -0.07  0.11  0.06 -0.04  0.05  0.05  0.10  0.02  0.22 -0.18
love         0.64 -0.25  0.07  0.03  0.14  0.02  0.30  0.05 -0.20 -0.04  0.08 -0.13 -0.01
nauseated    0.50  0.06 -0.17 -0.08 -0.12 -0.17  0.02  0.46  0.05 -0.01 -0.07  0.09  0.07
odors        0.64  0.03 -0.47 -0.20  0.10  0.10  0.06 -0.03  0.16  0.21  0.08 -0.07  0.20
pain         0.76 -0.16 -0.36  0.18 -0.04  0.10 -0.11 -0.08 -0.30 -0.22 -0.13  0.06  0.15
pride        0.70 -0.27  0.27  0.04 -0.16 -0.03  0.01 -0.31 -0.08  0.13  0.09  0.13  0.06
reasoning    0.41  0.69  0.12 -0.28  0.05  0.01  0.39 -0.19  0.14 -0.20  0.01  0.08  0.02
remembering  0.32  0.52  0.29 -0.28  0.03  0.13 -0.25  0.09 -0.18 -0.02  0.11  0.08  0.05
temperature  0.39  0.49  0.07 -0.04 -0.26  0.00 -0.10  0.07 -0.14  0.18  0.05 -0.17  0.00
tired        0.76  0.06 -0.10  0.06  0.03 -0.05  0.17  0.05 -0.09 -0.01 -0.01 -0.10 -0.18
               h2     u2 com
angry        1.00 0.0032 2.3
choices      0.63 0.3732 3.2
conscious    1.00 0.0049 4.9
depressed    0.68 0.3184 2.0
depth        1.00 0.0044 3.5
disrespected 0.66 0.3437 2.9
embarrassed  0.61 0.3919 3.3
fear         0.82 0.1845 1.5
guilt        0.99 0.0051 5.2
happy        0.65 0.3508 2.0
hungry       1.00 0.0042 2.4
love         0.65 0.3483 2.4
nauseated    0.56 0.4372 2.9
odors        0.82 0.1805 3.0
pain         0.98 0.0206 2.6
pride        0.82 0.1822 2.5
reasoning    1.00 0.0048 3.4
remembering  0.68 0.3218 4.5
temperature  0.56 0.4351 3.6
tired        0.68 0.3177 1.4

                       MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9 MR10 MR11 MR12 MR13
SS loadings           7.52 2.22 1.59 0.82 0.66 0.62 0.58 0.48 0.43 0.29 0.19 0.19 0.16
Proportion Var        0.38 0.11 0.08 0.04 0.03 0.03 0.03 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var        0.38 0.49 0.57 0.61 0.64 0.67 0.70 0.73 0.75 0.76 0.77 0.78 0.79
Proportion Explained  0.48 0.14 0.10 0.05 0.04 0.04 0.04 0.03 0.03 0.02 0.01 0.01 0.01
Cumulative Proportion 0.48 0.62 0.72 0.77 0.81 0.85 0.89 0.92 0.95 0.97 0.98 0.99 1.00

Mean item complexity =  3
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  190  and the objective function was  11.71 with Chi Square of  1399.04
The degrees of freedom for the model are 8  and the objective function was  0.05 

The root mean square of the residuals (RMSR) is  0 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  128 with the empirical chi square  0.82  with prob <  1 
The total number of observations was  128  with Likelihood Chi Square =  5.27  with prob <  0.73 

Tucker Lewis Index of factoring reliability =  1.059
RMSEA index =  0  and the 90 % confidence intervals are  0 0.077
BIC =  -33.55
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR8  MR9
Correlation of scores with factors             0.99 0.97 0.97 0.97 0.94 0.96 0.94 0.81 0.91
Multiple R square of scores with factors       0.98 0.95 0.95 0.94 0.87 0.92 0.88 0.66 0.84
Minimum correlation of possible factor scores  0.96 0.90 0.89 0.89 0.75 0.84 0.75 0.31 0.67
                                               MR10 MR11 MR12 MR13
Correlation of scores with factors             0.88 0.73 0.77 0.76
Multiple R square of scores with factors       0.78 0.53 0.60 0.58
Minimum correlation of possible factor scores  0.55 0.05 0.19 0.16
[1] 3
[1] 3

Step 2: Run EFA with varimax rotation

Factor Analysis using method =  minres
Call: fa(r = d3_all, nfactors = nfactors_d3_all, rotate = chosenRotType, 
    fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
               MR1  MR3  MR2   h2   u2 com
angry         0.54 0.50 0.24 0.59 0.41 2.4
choices       0.15 0.26 0.69 0.57 0.43 1.4
conscious     0.22 0.17 0.51 0.34 0.66 1.6
depressed     0.29 0.70 0.12 0.60 0.40 1.4
depth         0.16 0.02 0.51 0.28 0.72 1.2
disrespected  0.18 0.69 0.10 0.52 0.48 1.2
embarrassed   0.06 0.67 0.16 0.48 0.52 1.1
fear          0.78 0.40 0.13 0.78 0.22 1.6
guilt         0.10 0.68 0.04 0.47 0.53 1.0
happy         0.42 0.54 0.13 0.48 0.52 2.0
hungry        0.91 0.12 0.17 0.87 0.13 1.1
love          0.39 0.55 0.05 0.46 0.54 1.8
nauseated     0.42 0.19 0.23 0.26 0.74 2.0
odors         0.74 0.11 0.18 0.59 0.41 1.2
pain          0.72 0.35 0.10 0.65 0.35 1.5
pride         0.28 0.73 0.12 0.63 0.37 1.3
reasoning     0.14 0.02 0.71 0.52 0.48 1.1
remembering  -0.03 0.11 0.65 0.44 0.56 1.1
temperature   0.15 0.06 0.63 0.42 0.58 1.1
tired         0.57 0.39 0.34 0.60 0.40 2.5

                       MR1  MR3  MR2
SS loadings           3.97 3.87 2.72
Proportion Var        0.20 0.19 0.14
Cumulative Var        0.20 0.39 0.53
Proportion Explained  0.38 0.37 0.26
Cumulative Proportion 0.38 0.74 1.00

Mean item complexity =  1.5
Test of the hypothesis that 3 factors are sufficient.

The degrees of freedom for the null model are  190  and the objective function was  11.71 with Chi Square of  1399.04
The degrees of freedom for the model are 133  and the objective function was  1.77 

The root mean square of the residuals (RMSR) is  0.05 
The df corrected root mean square of the residuals is  0.05 

The harmonic number of observations is  128 with the empirical chi square  98.63  with prob <  0.99 
The total number of observations was  128  with Likelihood Chi Square =  208.44  with prob <  3.2e-05 

Tucker Lewis Index of factoring reliability =  0.909
RMSEA index =  0.074  and the 90 % confidence intervals are  0.049 0.084
BIC =  -436.88
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                MR1  MR3  MR2
Correlation of scores with factors             0.96 0.92 0.90
Multiple R square of scores with factors       0.91 0.85 0.80
Minimum correlation of possible factor scores  0.83 0.70 0.61

back to TOC

Factor loadings table

Subscales

Reliability (and intercorrelations - see alpha)

Call: scoreItems(keys = keys.list, items = d3_all, min = 0, max = 1)

(Unstandardized) Alpha:
      SOUL BODY MIND
alpha 0.87  0.9  0.8

Standard errors of unstandardized Alpha:
       SOUL  BODY  MIND
ASE   0.036 0.032 0.049

Average item correlation:
          SOUL BODY MIND
average.r 0.49 0.57  0.4

 Guttman 6* reliability: 
         SOUL BODY MIND
Lambda.6 0.89 0.92 0.82

Signal/Noise based upon av.r : 
             SOUL BODY MIND
Signal/Noise  6.8  9.1  4.1

Scale intercorrelations corrected for attenuation 
 raw correlations below the diagonal, alpha on the diagonal 
 corrected correlations above the diagonal:
     SOUL BODY MIND
SOUL 0.87 0.72 0.37
BODY 0.63 0.90 0.51
MIND 0.31 0.43 0.80

 In order to see the item by scale loadings and frequency counts of the data
 print with the short option = FALSEOmega 
Call: omega(m = d3_all, plot = F)
Alpha:                 0.91 
G.6:                   0.94 
Omega Hierarchical:    0.63 
Omega H asymptotic:    0.67 
Omega Total            0.94 

Schmid Leiman Factor loadings greater than  0.2 
                g   F1*   F2*   F3*   h2   u2   p2
angry        0.64  0.28  0.30       0.59 0.41 0.69
choices      0.43              0.61 0.57 0.43 0.32
conscious    0.38              0.43 0.34 0.66 0.42
depressed    0.55        0.54       0.60 0.40 0.51
depth        0.26              0.45 0.28 0.72 0.24
disrespected 0.47        0.54       0.52 0.48 0.43
embarrassed  0.40        0.55       0.48 0.52 0.33
fear         0.71  0.49             0.78 0.22 0.65
guilt        0.39        0.56       0.47 0.53 0.33
happy        0.55  0.20  0.37       0.48 0.52 0.64
hungry       0.68  0.64             0.87 0.13 0.52
love         0.52        0.39       0.46 0.54 0.59
nauseated    0.42  0.25             0.26 0.74 0.67
odors        0.57  0.52             0.59 0.41 0.54
pain         0.64  0.46             0.65 0.35 0.64
pride        0.56        0.56       0.63 0.37 0.49
reasoning    0.31              0.64 0.52 0.48 0.18
remembering  0.23              0.61 0.44 0.56 0.12
temperature  0.31              0.57 0.42 0.58 0.23
tired        0.64  0.32        0.21 0.60 0.40 0.69

With eigenvalues of:
  g F1* F2* F3* 
5.1 1.5 2.0 2.0 

general/max  2.49   max/min =   1.36
mean percent general =  0.46    with sd =  0.18 and cv of  0.4 
Explained Common Variance of the general factor =  0.48 

The degrees of freedom are 133  and the fit is  1.77 
The number of observations was  128  with Chi Square =  208.44  with prob <  3.2e-05
The root mean square of the residuals is  0.05 
The df corrected root mean square of the residuals is  0.05
RMSEA index =  0.074  and the 10 % confidence intervals are  0.049 0.084
BIC =  -436.88

Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 170  and the fit is  5.11 
The number of observations was  128  with Chi Square =  607.41  with prob <  1.8e-50
The root mean square of the residuals is  0.16 
The df corrected root mean square of the residuals is  0.17 

RMSEA index =  0.149  and the 10 % confidence intervals are  0.13 0.155
BIC =  -217.44 

Measures of factor score adequacy             
                                                 g  F1*  F2*  F3*
Correlation of scores with factors            0.82 0.73 0.80 0.85
Multiple R square of scores with factors      0.67 0.53 0.65 0.72
Minimum correlation of factor score estimates 0.34 0.05 0.29 0.45

 Total, General and Subset omega for each subset
                                                 g  F1*  F2*  F3*
Omega total for total scores and subscales    0.94 0.89 0.88 0.81
Omega general for total scores and subscales  0.63 0.58 0.47 0.20
Omega group for total scores and subscales    0.22 0.31 0.41 0.61

Study 4

Study information:

Demographics

Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector

back to TOC

Exploratory factor analysis

Step 1: Run maximal EFA (without and with rotation)

Factor Analysis using method =  minres
Call: fa(r = d4_all, nfactors = 6, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
              MR1   MR2   MR3   MR4   MR5   MR6   h2   u2 com
angry        0.65 -0.09 -0.30 -0.33 -0.01  0.09 0.64 0.36 2.0
choices      0.51  0.13  0.23 -0.01 -0.09  0.07 0.35 0.65 1.7
conscious    0.53  0.26  0.14 -0.31  0.00 -0.03 0.47 0.53 2.3
depressed    0.61 -0.15  0.00 -0.20 -0.11  0.13 0.46 0.54 1.5
depth        0.45  0.40  0.07 -0.11  0.10  0.31 0.49 0.51 3.1
disrespected 0.65 -0.11 -0.15 -0.31  0.12 -0.20 0.61 0.39 1.9
embarrassed  0.56 -0.09 -0.06  0.17  0.40 -0.19 0.55 0.45 2.4
fear         0.60 -0.14 -0.01  0.26 -0.06  0.07 0.45 0.55 1.5
guilt        0.51  0.32  0.02  0.11 -0.05 -0.17 0.41 0.59 2.1
happy        0.65 -0.29  0.39 -0.01  0.14  0.04 0.69 0.31 2.2
hungry       0.74 -0.13 -0.25  0.22 -0.03  0.06 0.68 0.32 1.5
love         0.57 -0.33  0.35  0.06 -0.07  0.04 0.56 0.44 2.4
nauseated    0.65 -0.18 -0.14  0.06  0.18 -0.07 0.51 0.49 1.5
odors        0.61 -0.06 -0.26  0.20 -0.24  0.02 0.54 0.46 2.0
pain         0.49 -0.02 -0.13 -0.10  0.11 -0.03 0.28 0.72 1.3
pride        0.66 -0.20  0.27 -0.05 -0.26 -0.17 0.65 0.35 2.1
reasoning    0.54  0.39 -0.08  0.03 -0.25 -0.26 0.58 0.42 2.9
remembering  0.41  0.25  0.04  0.23  0.06  0.09 0.29 0.71 2.4
temperature  0.51  0.47  0.18  0.07  0.17 -0.03 0.55 0.45 2.5
tired        0.72  0.03 -0.16  0.06 -0.02  0.24 0.61 0.39 1.4

                       MR1  MR2  MR3  MR4  MR5  MR6
SS loadings           6.90 1.15 0.78 0.63 0.50 0.41
Proportion Var        0.34 0.06 0.04 0.03 0.02 0.02
Cumulative Var        0.34 0.40 0.44 0.47 0.50 0.52
Proportion Explained  0.67 0.11 0.08 0.06 0.05 0.04
Cumulative Proportion 0.67 0.78 0.85 0.91 0.96 1.00

Mean item complexity =  2
Test of the hypothesis that 6 factors are sufficient.

The degrees of freedom for the null model are  190  and the objective function was  8.6 with Chi Square of  1045.24
The degrees of freedom for the model are 85  and the objective function was  0.89 

The root mean square of the residuals (RMSR) is  0.03 
The df corrected root mean square of the residuals is  0.05 

The harmonic number of observations is  128 with the empirical chi square  52.08  with prob <  1 
The total number of observations was  130  with Likelihood Chi Square =  104.81  with prob <  0.071 

Tucker Lewis Index of factoring reliability =  0.946
RMSEA index =  0.052  and the 90 % confidence intervals are  0 0.067
BIC =  -308.93
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5   MR6
Correlation of scores with factors             0.97 0.84 0.81 0.77 0.73  0.69
Multiple R square of scores with factors       0.94 0.71 0.66 0.59 0.53  0.48
Minimum correlation of possible factor scores  0.88 0.42 0.33 0.17 0.07 -0.04
[1] 3

Step 2: Run EFA with varimax rotation

Factor Analysis using method =  minres
Call: fa(r = d4_all, nfactors = nfactors_d4_all, rotate = chosenRotType, 
    fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
              MR1  MR2  MR3   h2   u2 com
angry        0.64 0.22 0.17 0.48 0.52 1.4
choices      0.16 0.44 0.36 0.35 0.65 2.2
conscious    0.22 0.50 0.23 0.35 0.65 1.8
depressed    0.46 0.19 0.37 0.39 0.61 2.3
depth        0.17 0.54 0.08 0.33 0.67 1.2
disrespected 0.55 0.24 0.27 0.43 0.57 1.8
embarrassed  0.43 0.22 0.26 0.30 0.70 2.2
fear         0.47 0.20 0.34 0.37 0.63 2.2
guilt        0.25 0.54 0.10 0.37 0.63 1.5
happy        0.29 0.19 0.74 0.66 0.34 1.4
hungry       0.72 0.24 0.23 0.63 0.37 1.4
love         0.26 0.09 0.71 0.58 0.42 1.3
nauseated    0.59 0.17 0.30 0.47 0.53 1.6
odors        0.60 0.22 0.14 0.43 0.57 1.4
pain         0.45 0.22 0.14 0.27 0.73 1.7
pride        0.36 0.23 0.57 0.50 0.50 2.1
reasoning    0.32 0.55 0.03 0.40 0.60 1.6
remembering  0.20 0.42 0.10 0.23 0.77 1.6
temperature  0.10 0.71 0.14 0.53 0.47 1.1
tired        0.60 0.37 0.21 0.55 0.45 1.9

                       MR1  MR2  MR3
SS loadings           3.71 2.65 2.24
Proportion Var        0.19 0.13 0.11
Cumulative Var        0.19 0.32 0.43
Proportion Explained  0.43 0.31 0.26
Cumulative Proportion 0.43 0.74 1.00

Mean item complexity =  1.7
Test of the hypothesis that 3 factors are sufficient.

The degrees of freedom for the null model are  190  and the objective function was  8.6 with Chi Square of  1045.24
The degrees of freedom for the model are 133  and the objective function was  1.63 

The root mean square of the residuals (RMSR) is  0.05 
The df corrected root mean square of the residuals is  0.06 

The harmonic number of observations is  128 with the empirical chi square  129.97  with prob <  0.56 
The total number of observations was  130  with Likelihood Chi Square =  194.94  with prob <  0.00038 

Tucker Lewis Index of factoring reliability =  0.894
RMSEA index =  0.067  and the 90 % confidence intervals are  0.041 0.078
BIC =  -452.45
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy             
                                                MR1  MR2  MR3
Correlation of scores with factors             0.87 0.85 0.85
Multiple R square of scores with factors       0.76 0.72 0.73
Minimum correlation of possible factor scores  0.53 0.45 0.45

back to TOC

Factor loadings table

Big factor loadings table for all studies (Studies 1-4)

Error in fa.sort(efa_d2_all_rotatedN) : 
  object 'efa_d2_all_rotatedN' not found

Figures

3D scatterplots

Factor loadings for the 40 mental capacities on the three rotated factors in Study 1. Items are colored by their dominant factor loading: Items that loaded most strongly on the body factor (bodily states and will) are in red; items that loaded most strongly on the heart factor (social-emotional experiences and morality) are in blue; and items that loaded most strongly on the mind factor (perceptual-cognitive abilities and goal pursuit) are in green.

Study 1 (adults)

Joining, by = "item"

Study 2 (7-9yo)

Joining, by = "item"

Study 3 (7-9yo)

Joining, by = "item"

Study 4 (4-6yo)

Heatmaps

NOTE: set to 3 factors manually, for now.

Study 1 (adults)

Joining, by = "item"

Study 2 (7-9y)

Joining, by = "item"

Study 3 (7-9y)

Joining, by = "item"

Study 4 (4-6y)

(3 factors by force)

Joining, by = "item"

Mean ratings

Studies 1-2

Mean ratings of 40 mental capacities for the 2 entities included in Studies 1-2. Participants responded on a 3-point scale (0 = “no”, 0.5 = “kinda”, 1 = “yes”). Error bars are nonparametric bootstrapped 95% confidence intervals. Mental capacities are grouped according to their dominant factor loading in Study 1 (adults).

Studies 3-4

Mean ratings of 20 mental capacities for the 9 entities included in Studies 3-4. Participants responded on a 3-point scale (0 = “no”, 0.5 = “kinda”, 1 = “yes”). Error bars are nonparametric bootstrapped 95% confidence intervals. Mental capacities are grouped according to their dominant factor loading in Study 3 (7-9y).

Mean factor scores

Studies 1-2

Joining, by = c("study", "subid", "character", "age", "gender", "ethnicity", "trialNum", "bgColor", "capacity", "capWording", "hoverTime", "rt", "response", "responseNum", "age_group", "responseNumC")
Column `study` joining factors with different levels, coercing to character vectorColumn `character` joining factors with different levels, coercing to character vectorColumn `gender` joining factors with different levels, coercing to character vectorColumn `ethnicity` joining factors with different levels, coercing to character vectorColumn `capWording` joining factors with different levels, coercing to character vectorColumn `response` joining factors with different levels, coercing to character vectorJoining, by = "subid"
Loading required package: Matrix

Attaching package: ‘Matrix’

The following object is masked from ‘package:tidyr’:

    expand
Linear mixed model fit by REML ['lmerMod']
Formula: score ~ character * factor * age_group + (1 | subid)
   Data: tempC

REML criterion at convergence: 86761.5

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.3061 -0.6245  0.0334  0.6193  3.0480 

Random effects:
 Groups   Name        Variance Std.Dev.
 subid    (Intercept) 0.2320   0.4816  
 Residual             0.3495   0.5912  
Number of obs: 47532, groups:  subid, 400

Fixed effects:
                                                Estimate Std. Error t value
(Intercept)                                    -0.001269   0.024249   -0.05
characterrobot                                 -0.248788   0.024249  -10.26
factorfactor1                                   0.007584   0.003837    1.98
factorfactor3                                   0.003174   0.003837    0.83
age_groupchildren                               0.183383   0.024249    7.56
characterrobot:factorfactor1                    0.276372   0.003837   72.02
characterrobot:factorfactor3                    0.373325   0.003837   97.29
characterrobot:age_groupchildren                0.043278   0.024249    1.78
factorfactor1:age_groupchildren                 0.457873   0.003837  119.32
factorfactor3:age_groupchildren                -0.304688   0.003837  -79.40
characterrobot:factorfactor1:age_groupchildren -0.017203   0.003837   -4.48
characterrobot:factorfactor3:age_groupchildren -0.027872   0.003837   -7.26

Correlation of Fixed Effects:
            (Intr) chrctr fctrf1 fctrf3 ag_grp chrc:1 chrc:3 chrc:_ fct1:_ fct3:_ ch:1:_
charactrrbt  0.010                                                                      
factorfctr1  0.000  0.000                                                               
factorfctr3  0.000  0.000 -0.500                                                        
ag_grpchldr  0.001  0.030  0.000  0.000                                                 
chrctrrbt:1  0.000  0.000  0.013 -0.006  0.000                                          
chrctrrbt:3  0.000  0.000 -0.006  0.013  0.000 -0.500                                   
chrctrrbt:_  0.030  0.001  0.000  0.000  0.010  0.000  0.000                            
fctrfctr1:_  0.000  0.000 -0.002  0.001  0.000  0.033 -0.016  0.000                     
fctrfctr3:_  0.000  0.000  0.001 -0.002  0.000 -0.016  0.033  0.000 -0.500              
chrctrr:1:_  0.000  0.000  0.033 -0.016  0.000 -0.002  0.001  0.000  0.013 -0.006       
chrctrr:3:_  0.000  0.000 -0.016  0.033  0.000  0.001 -0.002  0.000 -0.006  0.013 -0.500

Study 3

Studies 3-4

Factor scores by age

Study 1

Joining, by = "subid"

Study 2

Joining, by = "subid"

Studies 1-2

Joining, by = "subid"
Ignoring unknown aesthetics: y

Studies 3-4

Joining, by = c("age_group", "subid", "age", "character")
Column `character` joining factors with different levels, coercing to character vectorJoining, by = "subid"

LS0tCnRpdGxlOiAiRGlta2lkIENvZ1NjaSAyMDE3IChXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCBDb2dTY2kgMjAxNykiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IGZsYXRseQogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCiMgU2V0dXAKCmBgYHtyIHdvcmtzcGFjZSBzZXR1cH0KIyBsb2FkIGxpYnJhcmllcwpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwc3ljaCkKbGlicmFyeShsYW5nY29nKSAjIHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2xhbmdjb2cvbGFuZ2NvZwpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShwbG90bHkpCmxpYnJhcnkobHVicmlkYXRlKQoKIyBjbGVhciB3b3Jrc3BhY2UKcm0obGlzdCA9IGxzKGFsbCA9IFQpKQpncmFwaGljcy5vZmYoKQpgYGAKCmBgYHtyIGZ1bmN0aW9uc30KIyBtYWtlIG5hLnJtID0gVCB2ZXJzaW9ucyBvZiBzdW1tYXJ5IGZ1bmN0aW9ucwptZWFuX25hIDwtIGZ1bmN0aW9uKHgpIHttZWFuKHgsIG5hLnJtID0gVCl9CmNpX2xvd2VyX25hIDwtIGZ1bmN0aW9uKHgpIHtxdWFudGlsZSh4LCAwLjAyNSwgbmEucm0gPSBUKX0KY2lfdXBwZXJfbmEgPC0gZnVuY3Rpb24oeCkge3F1YW50aWxlKHgsIDAuOTc1LCBuYS5ybSA9IFQpfQoKIyBtYWtlIHJvdW5kaW5nIGZ1bmN0aW9uCnJvdW5kMiA8LSBmdW5jdGlvbih4KSB7Zm9ybWF0KHJvdW5kKHgsIDIpLCBuc21hbGwgPSAyKX0KCiMgbWFrZSBjbGVhbnVwIGZ1bmN0aW9uCmNsZWFudXAgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSwgYWdlX2dyb3VwKSB7CiAgaWYoZ3JlcGwoImFkdWx0IiwgYWdlX2dyb3VwKSkgewogICAgCiAgICAjIHNldCB0YXJnZXQgZGF0YXNldAogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZF9yYXdfc3R1ZHkxfQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGRfcmF3X3N0dWR5MWJ9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZF9yYXdfc3R1ZHkxY30KICAgIAogICAgIyBlbmFjdCBleGNsdXNpb25hcnkgY3JpdGVyaWEKICAgIGRfY2xlYW5fMSA8LSBkCiAgICAKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzEgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpKSAlPiUKICAgICAgbXV0YXRlKCAjIGRlYWwgd2l0aCByYWNlCiAgICAgICAgcmFjZV9jYXQyID0gZmFjdG9yKHN1YigiICskIiwgIiIsIGV0aG5pY2l0eSkpLAogICAgICAgIHJhY2VfY2F0MyA9IGZhY3RvcihpZmVsc2UoZ3JlcGwoIiAiLCByYWNlX2NhdDIpID09IFQsICJtdWx0aXJhY2lhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIocmFjZV9jYXQyKSkpKSAlPiUKICAgICAgZHBseXI6OnNlbGVjdChzdHVkeSwgc3ViaWQ6Y291bnRyeV9zZWxmcmVwLCBhZ2VfZ3JvdXAsIHJhY2VfY2F0MykgJT4lCiAgICAgIHJlbmFtZShyYWNlX2NhdCA9IHJhY2VfY2F0MykgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggcmVsaWdpb24gKG5vdGU6IG9ubHkgZGVhbGluZyB3aXRoIGNoaWxkaG9vZCByZWxpZ2lvbiBmb3Igbm93KQogICAgICAgIHJlbGlnaW9uX2NhdDIgPSBmYWN0b3Ioc3ViKCIgKyQiLCAiIiwgcmVsaWdpb25DaGlsZCkpLAogICAgICAgIHJlbGlnaW9uX2NhdDMgPSBmYWN0b3IoaWZlbHNlKGdyZXBsKCIgIiwgcmVsaWdpb25fY2F0MikgPT0gVCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcmVsaWdpb3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIocmVsaWdpb25fY2F0MikpKSkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3R1ZHk6cmFjZV9jYXQsIHJlbGlnaW9uX2NhdDMpICU+JQogICAgICByZW5hbWUocmVsaWdpb25fY2F0ID0gcmVsaWdpb25fY2F0MykKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8xKQogIH0KICAKICBpZihncmVwbCgiY2hpbGQiLCBhZ2VfZ3JvdXApKSB7CiAgICAKICAgICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkX3Jhd19zdHVkeTJ9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkX3Jhd19zdHVkeTN9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkX3Jhd19zdHVkeTR9CiAgICAKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbl8yIDwtIGQgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpLAogICAgICAgIHJlc3BvbnNlTnVtID0gaWZlbHNlKCFpcy5uYShyZXNwb25zZU51bSksIHJlc3BvbnNlTnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZXNwb25zZSA9PSAibm8iLCAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlc3BvbnNlID09ICJraW5kYSIsIDAuNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVzcG9uc2UgPT0gInllcyIsIDEsIE5BKSkpKSkKICAgICMgTk9URTogbmVlZCB0byByZWNvbmNpbGUgcmFjZS9ldGhuaWNpdHkgYXQgc29tZSBwb2ludC4uLgogICAgIyBOT1RFOiBuZWVkIHRvIGRlYWwgd2l0aCBnZW5kZXIgYXQgc29tZSBwb2ludC4uLgogIAogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzIKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8yKQogIH0KICAKICAjIHJlbW92ZSBvdXRsaWVycyBpZiBkZXNpcmVkCiAgaWYoY2hvc2VuT3V0bGllckhhbmRsaW5nID09ICJyZW1vdmUiKSB7CiAgICAKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgZ2F0aGVyKGNhcGFjaXR5LCBzY29yZSwgaGFwcHk6cHJpZGUpICU+JQogICAgICBncm91cF9ieShjaGFyYWN0ZXIsIGNhcGFjaXR5KSAlPiUKICAgICAgZmlsdGVyKCFzY29yZSAlaW4lIGJveHBsb3Quc3RhdHMoc2NvcmUsIDIuNSkkb3V0KSAlPiUKICAgICAgc3ByZWFkKGNhcGFjaXR5LCBzY29yZSkgJT4lCiAgICAgIGFycmFuZ2UoY2hhcmFjdGVyLCBzdWJpZCkKICAgIAogIH0KICAKICAjIGZpbHRlciBjaGFyYWN0ZXJzIGlmIGRlc2lyZWQKICBpZihpcy5lbGVtZW50KCJub25lIiwgY2hvc2VuRXhjbHVkZSkpIHt9IGVsc2UgewogICAgCiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIGZpbHRlcighY2hhcmFjdGVyICVpbiUgY2hvc2VuRXhjbHVkZSkKICAgIAogICAgfQogICAgCiAgIyBmaWx0ZXIgaXRlbXMgaWYgZGVzaXJlZAogIGlmKGlzLmVsZW1lbnQoIm5vbmUiLCBjaG9zZW5FeGNsdWRlSXRlbSkpIHt9IGVsc2UgewogICAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgICBkcGx5cjo6ZmlsdGVyKCFjYXBhY2l0eSAlaW4lIGNob3NlbkV4Y2x1ZGVJdGVtKQogIH0KICAKICAjIGRyb3AgdHJpYWxzIDwyNTAgbXMKICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICBmaWx0ZXIocnQgPj0gMjUwIHwgaXMubmEocnQpKQogIAogICMgY2VudGVyIHJlc3BvbnNlIHZhcmlhYmxlCiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKSB7CiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIG11dGF0ZShyZXNwb25zZU51bUMgPSByZXNwb25zZU51bSAtIDQpCiAgfSBlbHNlIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgbXV0YXRlKHJlc3BvbnNlTnVtQyA9IHJlc3BvbnNlTnVtIC0gMC41KQogIH0KCiAgICAjIHJlbmFtZSBjaGFyYWN0ZXIgbmFtZSB2YXJpYWJsZXMKICBpZigiY2hhck5hbWUiICVpbiUgbmFtZXMoZF9jbGVhbikpIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUgcmVuYW1lKGNoYXJhY3RlciA9IGNoYXJOYW1lKQogIH0KICAKICAjIGNsZWFudXAKICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICBmaWx0ZXIoIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNoYXJhY3RlciksICFpcy5uYShjYXBhY2l0eSkpCiAgCiAgIyByZXR1cm4gY2xlYW5lZCBkYXRhc2V0CiAgcmV0dXJuKGRfY2xlYW4pCn0KCiMgbWFrZSBmdW5jdGlvbiBmb3Igc3RyaXBwaW5nIGRhdGFmcmFtZXMgZm9yIGRpbWVuc2lvbiByZWR1Y2F0aW9uCm1ha2VEUkRGIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UsIGNob3NlbkNvbmRpdGlvbikgewogIAogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGZpbHRlciBieSBjaGFyYWN0ZXIgaWYgc3BlY2lmaWVkCiAgaWYoY2hvc2VuQ29uZGl0aW9uICVpbiUgYygiYmVldGxlIiwgInJvYm90IikpIHsKICAgIGQgPC0gZCAlPiUgZmlsdGVyKGNoYXJhY3RlciA9PSBjaG9zZW5Db25kaXRpb24pCiAgfQoKICAjIG1ha2Ugc3RyaXBwZWQgZGF0YWZyYW1lIGZvciBkaW1lbnNpb24gcmVkdWNhdGlvbiBhbmFseXNlcwogIGRfc3RyaXAgPC0gZCAlPiUKICAgIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNhcGFjaXR5KSwgY2FwYWNpdHkgIT0gIiIpICU+JQogICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgICBzZWxlY3Qoc3ViaWQsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgICBzcHJlYWQoY2FwYWNpdHksIHJlc3BvbnNlTnVtKSAlPiUKICAgIHJlbW92ZV9yb3duYW1lcygpICU+JQogICAgY29sdW1uX3RvX3Jvd25hbWVzKHZhciA9ICJzdWJpZCIpCgogICMgcmV0dXJuIHN0cmlwcGVkIGRhdGFmcmFtZQogIHJldHVybihkX3N0cmlwKQp9CgojIG1ha2UgZGVtb2dyYXBoaWNzIGZ1bmN0aW9ucwpkZW1vU2FtcGxlU2l6ZSA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCBkaXN0aW5jdCBzdWJpZHMKICBzYW1wbGVfc2l6ZSA8LSBkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyKSAlPiUgY291bnQoY2hhcmFjdGVyKSAlPiUgZGF0YS5mcmFtZSgpCgogICMgYWRkIHRvdGFsIHNhbXBsZSBzaXplICAKICBzYW1wbGVfc2l6ZSA8LSByYmluZChzYW1wbGVfc2l6ZSAlPiUgbXV0YXRlKGNoYXJhY3RlciA9IGFzLmNoYXJhY3RlcihjaGFyYWN0ZXIpKSwKICAgICAgICAgICAgICAgICAgICAgICBjKGNoYXJhY3RlciA9ICJhbGwiLCBuID0gZCAlPiUgZGlzdGluY3Qoc3ViaWQpICU+JSBjb3VudCgpICU+JSBhcy5udW1lcmljKCkpKQogIAogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihzYW1wbGVfc2l6ZSkKfQpkZW1vRHVyYXRpb24gPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNoYXJhY3RlcgogIGR1cmF0aW9uIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBkdXJhdGlvbikgJT4lCiAgICBtdXRhdGUoZHVyYXRpb24gPSBhcy5udW1lcmljKGR1cmF0aW9uKSkgJT4lCiAgICBncm91cF9ieShjaGFyYWN0ZXIpICU+JQogICAgc3VtbWFyaXNlKG1pbl9kdXJhdGlvbiA9IG1pbihkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfZHVyYXRpb24gPSBtYXgoZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2R1cmF0aW9uID0gbWVkaWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1lYW5fZHVyYXRpb24gPSBtZWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2R1cmF0aW9uID0gc2QoZHVyYXRpb24sIG5hLnJtID0gVCkpCgogICMgYWRkIHRvdGFsIGR1cmF0aW9uCiAgYWxsIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBkdXJhdGlvbikgJT4lCiAgICBtdXRhdGUoZHVyYXRpb24gPSBhcy5udW1lcmljKGR1cmF0aW9uKSkgJT4lCiAgICBzdW1tYXJpc2UobWluX2R1cmF0aW9uID0gbWluKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1heF9kdXJhdGlvbiA9IG1heChkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWRpYW5fZHVyYXRpb24gPSBtZWRpYW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9kdXJhdGlvbiA9IG1lYW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2RfZHVyYXRpb24gPSBzZChkdXJhdGlvbiwgbmEucm0gPSBUKSkgJT4lCiAgICBtdXRhdGUoY2hhcmFjdGVyID0gImFsbCIpCiAgCiAgZHVyYXRpb24gPC0gcmJpbmQoZHVyYXRpb24sIGFsbCkgIyBub3Qgc3VyZSB3aHkgZnVsbF9qb2luIGRvZXNuJ3Qgd29yayAgICAKCiAgIyByZXR1cm4gZGF0YWZyYW1lCiAgcmV0dXJuKGR1cmF0aW9uKQp9CmRlbW9BZ2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNoYXJhY3RlcgogIGFnZSA8LSBkICU+JQogICAgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgYWdlKSAlPiUKICAgIG11dGF0ZShhZ2UgPSBhcy5udW1lcmljKGFnZSkpICU+JQogICAgZ3JvdXBfYnkoY2hhcmFjdGVyKSAlPiUKICAgIHN1bW1hcmlzZShtaW5fYWdlID0gbWluKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfYWdlID0gbWF4KGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWRpYW5fYWdlID0gbWVkaWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4oYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2FnZSA9IHNkKGFnZSwgbmEucm0gPSBUKSkKCiAgIyBhZGQgdG90YWwgYWdlCiAgYWxsIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBhZ2UpICU+JQogICAgbXV0YXRlKGFnZSA9IGFzLm51bWVyaWMoYWdlKSkgJT4lCiAgICBzdW1tYXJpc2UobWluX2FnZSA9IG1pbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWF4X2FnZSA9IG1heChhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2FnZSA9IG1lZGlhbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9hZ2UgPSBtZWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBzZF9hZ2UgPSBzZChhZ2UsIG5hLnJtID0gVCkpICU+JQogICAgbXV0YXRlKGNoYXJhY3RlciA9ICJhbGwiKQogIGFnZSA8LSBmdWxsX2pvaW4oYWdlLCBhbGwpCgogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihhZ2UpCn0KZGVtb0dlbmRlciA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCBnZW5kZXIgcGVyIGNoYXJhY3RlciBhbmQgb3ZlcmFsbAogIGdlbmRlciA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBnZW5kZXIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUoY2hhcmFjdGVyLCBnZW5kZXIpKSkpICU+JQogICAgZmlsdGVyKGdlbmRlciAhPSAiU3VtIikgJT4lCiAgICByZW5hbWUobiA9IEZyZXEpCiAgCiAgZ2VuZGVyIDwtIGdlbmRlciAlPiUKICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoaWZlbHNlKGNoYXJhY3RlciA9PSAiU3VtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbGwiLCBhcy5jaGFyYWN0ZXIoY2hhcmFjdGVyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImJlZXRsZSIsICJyb2JvdCIsICJhbGwiKSkpICU+JQogICAgYXJyYW5nZShjaGFyYWN0ZXIsIGdlbmRlcikgJT4lCiAgICBzcHJlYWQoZ2VuZGVyLCBuKQogIAogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihnZW5kZXIpCn0KZGVtb1JhY2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgcmFjZSBwZXIgY2hhcmFjdGVyIGFuZCBvdmVyYWxsCiAgcmFjZSA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCByYWNlX2NhdCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUoY2hhcmFjdGVyLCByYWNlX2NhdCkpKSkgJT4lCiAgICBmaWx0ZXIocmFjZV9jYXQgIT0gIlN1bSIpICU+JQogICAgcmVuYW1lKG4gPSBGcmVxKQoKICAgIHJhY2UgPC0gcmFjZSAlPiUKICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihpZmVsc2UoY2hhcmFjdGVyID09ICJTdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIiwgYXMuY2hhcmFjdGVyKGNoYXJhY3RlcikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImJlZXRsZSIsICJyb2JvdCIsICJhbGwiKSkpICU+JQogICAgICBhcnJhbmdlKGNoYXJhY3RlciwgcmFjZV9jYXQpICU+JQogICAgICBzcHJlYWQocmFjZV9jYXQsIG4pCiAgCiAgIyByZXR1cm4gZGF0YWZyYW1lCiAgcmV0dXJuKHJhY2UpCn0KCiMgcGxvdHRpbmcgZnVuY3Rpb25zCm1ha2VGYWNldExhYnMgPC0gZnVuY3Rpb24oZGZfcGxvdHRpbmcpIHsKICBmYWNldF9sYWJlbHMgPC0gYXJyYXkoKQogIGRmX3Bsb3R0aW5nIDwtIGRmX3Bsb3R0aW5nICU+JSBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpCiAgZm9yKGkgaW4gMTpsZW5ndGgobGV2ZWxzKGRmX3Bsb3R0aW5nJGNoYXJhY3RlcikpKSB7CiAgICBkZiA8LSBkZl9wbG90dGluZyAlPiUgZmlsdGVyKGNoYXJhY3RlciA9PSBsZXZlbHMoZGZfcGxvdHRpbmckY2hhcmFjdGVyKVtpXSkgJT4lCiAgICAgIHNlbGVjdChjaGFyYWN0ZXIsIG4pICU+JSB1bmlxdWUoKQogICAgZmFjZXRfbGFiZWxzW2ldIDwtIHBhc3RlMChkZiRjaGFyYWN0ZXIsICIgKG4gPSAiLCBkZiRuLCAiKSIpCiAgfQogIG5hbWVzKGZhY2V0X2xhYmVscykgPC0gbGV2ZWxzKGRmX3Bsb3R0aW5nJGNoYXJhY3RlcikKICByZXR1cm4oZmFjZXRfbGFiZWxzKQp9CmBgYAoKYGBge3IgbW9kZWxpbmcgZGVjaXNpb25zfQojIHJlbW92ZSBvdXRsaWVycz8KY2hvc2VuT3V0bGllckhhbmRsaW5nIDwtICJrZWVwIgojIGNob3Nlbk91dGxpZXJIYW5kbGluZyA8LSAicmVtb3ZlIgoKIyBleGNsdWRlIGFueSBjb25kaXRpb25zIChjaGFyYWN0ZXJzKT8KY2hvc2VuRXhjbHVkZSA8LSAibm9uZSIKIyBjaG9zZW5FeGNsdWRlIDwtIGMoInN0YXBsZXIiLCAiY2FyIiwgImNvbXB1dGVyIikKCiMgZXhjbHVkZSBhbnkgaXRlbXMgKG1lbnRhbCBjYXBhY2l0aWVzKT8KIyBjaG9zZW5FeGNsdWRlSXRlbSA8LSAibm9uZSIKIyBjaG9zZW5FeGNsdWRlSXRlbSA8LSAiY29tcHV0YXRpb25zIgpjaG9zZW5FeGNsdWRlSXRlbSA8LSBjKCJtZXRhbCIsICJvbl9vZmYiKQoKIyBOT1RFOiBhbHdheXMgY2hvb3NlIG1pbmltYWwgcmVzaWR1YWwgKGZtID0gIm1pbnJlcyIpIGluc3RlYWQgb2YgTUwgYmVjYXVzZSBvZiBub24tbm9ybWFsaXR5CgojIGZvciBFRkFzLCB3aGF0IGtpbmQgb2YgY29ycmVsYXRpb24/CmNob3NlbkNvclR5cGUgPC0gImNvciIgIyBwZWFyc29uIGNvcnJlbGF0aW9uCiMgY2hvc2VuQ29yVHlwZSA8LSAicG9seSIgIyBwb2x5Y2hvcmljIGNvcnJlbGF0aW9uCgojIGZvciBFRkFzLCB3aGF0IGtpbmQgb2Ygcm90YXRpb24/CmNob3NlblJvdFR5cGUgPC0gInZhcmltYXgiICMgdmFyaW1heCByb3RhdGlvbgojIGNob3NlblJvdFR5cGUgPC0gIm9ibGltaW4iICMgb2JsaW1pbiByb3RhdGlvbgojIGNob3NlblJvdFR5cGUgPC0gIm5vbmUiICMgbm8gcm90YXRpb24KCmRhdGEuZnJhbWUoImNvbmRpdGlvbnNFeGNsdWRlZCIgPSBjaG9zZW5FeGNsdWRlLAogICAgICAgICAgICJvdXRsaWVySGFuZGxpbmciID0gY2hvc2VuT3V0bGllckhhbmRsaW5nLAogICAgICAgICAgICJFRkFfY29ycmVsYXRpb24iID0gY2hvc2VuQ29yVHlwZSwKICAgICAgICAgICAiRUZBX3JvdGF0aW9uIiA9IGNob3NlblJvdFR5cGUpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMgRGF0YSBwcmVwYXJhdGlvbgoKYGBge3IgZGF0YSB1cGxvYWR9CiMgc3R1ZHkgMSAoMjAxNi0wNy0wNiwgYWR1bHRzLCAyIGNvbmRpdGlvbnMsIDMtcG9pbnQgc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJtYWtlIHBsYW5zIikKZF9yYXdfc3R1ZHkxIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDFfMjAxNi0wNi0wNV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxIiwgYWdlX2dyb3VwID0gImFkdWx0cyIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDFiICgyMDE3LTA3LTE5LCBhZHVsdHMsIDIgY29uZGl0aW9ucywgNy1wb2ludCBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTFiIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDJfMjAxNi0wNy0xOV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxYiIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUgc2VsZWN0KC1YKQoKIyBzdHVkeSAxYyAoMjAxNi0xMi0wOCwgYWR1bHRzLCAyIGNvbmRpdGlvbnMsIDMtcG9pbnQgc2NhbGUsICJoYXZlIGZyZWUgd2lsbCIgYW5kICJoYXZlIGludGVudGlvbnMiKQpkX3Jhd19zdHVkeTFjIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDNfMjAxNi0xMi0wOF9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxYyIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUgc2VsZWN0KC1YKQoKIyBzdHVkeSAyIChKdW5lIC0gRGVjZW1iZXIgMjAxNiwgNy05eW8sIDIgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTIgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAxXzIwMTctMDctMjRfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMiIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl83OSIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDMgKEphbnVhcnkgLSBKdW5lIDIwMTcsIDctOXlvLCA5IGNvbmRpdGlvbnMsIDMtcG9pbnQtc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJtYWtlIHBsYW5zIikKZF9yYXdfc3R1ZHkzIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2NoaWxkcmVuL3J1bi0wMl8yMDE3LTA4LTA4X2Fub255bWl6ZWQuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDMiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW5fNzkiKSAlPiUgc2VsZWN0KC1YKSAlPiUKICBtdXRhdGUoZG9iID0gcGFyc2VfZGF0ZXRpbWUoZGF0ZU9mQmlydGgsICIlbS8lZC8leSIpLAogICAgICAgICBkb3QgPSBwYXJzZV9kYXRldGltZShnc3ViKCIyMDE3IiwgIjE3IiwgZGF0ZU9mVGVzdCksICIlbS8lZC8leSIpLCAKICAgICAgICAgYWdlID0gaW50ZXJ2YWwoc3RhcnQgPSBkb2IsIGVuZCA9IGRvdCkgLyBkdXJhdGlvbihudW0gPSAxLCB1bml0cyA9ICJ5ZWFycyIpKSAlPiUKICBzZWxlY3QoLWRhdGVPZkJpcnRoLCAtZGF0ZU9mVGVzdCwgLWRvYiwgLWRvdCkKCiMgc3R1ZHkgNCAoTWFyeSAyMDE3IC0gcHJlc2VudCwgNC02eW8sIDkgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTQgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAzXzIwMTctMDgtMTBfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgNCIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl80NiIpICU+JSBzZWxlY3QoLVgpICU+JQogIG11dGF0ZShkb2IgPSBwYXJzZV9kYXRldGltZShkYXRlT2ZCaXJ0aCwgIiVtLyVkLyV5IiksCiAgICAgICAgIGRvdCA9IHBhcnNlX2RhdGV0aW1lKGdzdWIoIjIwMTciLCAiMTciLCBkYXRlT2ZUZXN0KSwgIiVtLyVkLyV5IiksIAogICAgICAgICBhZ2UgPSBpbnRlcnZhbChzdGFydCA9IGRvYiwgZW5kID0gZG90KSAvIGR1cmF0aW9uKG51bSA9IDEsIHVuaXRzID0gInllYXJzIikpICU+JQogIHNlbGVjdCgtZGF0ZU9mQmlydGgsIC1kYXRlT2ZUZXN0LCAtZG9iLCAtZG90KQpgYGAKCmBgYHtyIGRhdGEgY2xlYW51cH0KIyBjbGVhbiB1cCBkYXRhc2V0cwpkMSA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQxYiA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQxYyA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQyIDwtIGNsZWFudXAoInN0dWR5IDIiLCAiY2hpbGRyZW4iKQpkMyA8LSBjbGVhbnVwKCJzdHVkeSAzIiwgImNoaWxkcmVuIikKZDQgPC0gY2xlYW51cCgic3R1ZHkgNCIsICJjaGlsZHJlbiIpCgojIHR3ZWFrIGJ5IGhhbmQKZDIgPC0gZDIgJT4lCiAgZmlsdGVyKCFpcy5uYShhZ2UpKSAlPiUKICBmaWx0ZXIoYWdlID49IDcsIGFnZSA8IDEwKSAlPiUKICBmaWx0ZXIoY2hhcmFjdGVyICE9ICJlbGVwaGFudCIpCgpkMyA8LSBkMyAlPiUKICBmaWx0ZXIoIWlzLm5hKGNoYXJhY3RlciksIGNoYXJhY3RlciAhPSAiIikKCmQ0IDwtIGQ0ICU+JQogIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgY2hhcmFjdGVyICE9ICIiKQpgYGAKCmBgYHtyIGRhdGFmcmFtZXMgZm9yIGRpbWVuc2lvbiByZWR1Y2F0aW9ufQojIG1ha2UgZGF0YWZyYW1lcyBmb3IgczEKIyBkMV9iZWV0bGUgPC0gbWFrZURSREYoInN0dWR5IDEiLCAiYmVldGxlIikKIyBkMV9yb2JvdCA8LSBtYWtlRFJERigic3R1ZHkgMSIsICJyb2JvdCIpCmQxX2FsbCA8LSBtYWtlRFJERigic3R1ZHkgMSIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIGZvbGxvdy11cCBzdHVkaWVzIHRvIHMxCmQxYl9hbGwgPC0gbWFrZURSREYoInN0dWR5IDFiIiwgImFsbCIpCmQxY19hbGwgPC0gbWFrZURSREYoInN0dWR5IDFjIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgMgojIGQyX2JlZXRsZSA8LSBtYWtlRFJERigic3R1ZHkgMiIsICJiZWV0bGUiKQojIGQyX3JvYm90IDwtIG1ha2VEUkRGKCJzdHVkeSAyIiwgInJvYm90IikKZDJfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAyIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgMwojIGQzX2JlZXRsZSA8LSBtYWtlRFJERigic3R1ZHkgMyIsICJiZWV0bGUiKQojIGQzX3JvYm90IDwtIG1ha2VEUkRGKCJzdHVkeSAzIiwgInJvYm90IikKZDNfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAzIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgNApkNF9hbGwgPC0gbWFrZURSREYoInN0dWR5IDQiLCAiYWxsIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyBBbmFseXNpcyBwbGFuCgpGb3IgYWxsIHN0dWRpZXMgd2UgY29uZHVjdCBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgdXNpbmcgUGVhcnNvbiBjb3JyZWxhdGlvbnMgdG8gZmluZCBtaW5pbXVtIHJlc2lkdWFsIHNvbHV0aW9ucy4gCgpGb3IgZWFjaCBzdHVkeSwgd2UgZmlyc3QgZXhhbWluZSBtYXhpbWFsIHVucm90YXRlZCBhbmQgcm90YXRlZCBzb2x1dGlvbnMuIFRvIGRldGVybWluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0LCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBydWxlIG9mIHRodW1iOiBXaXRoICRwJCBvYnNlcnZhdGlvbnMgcGVyIHBhcnRpY2lwYW50LCB3ZSBjYW4gZXh0cmFjdCBhIG1heGltdW0gb2YgJGskIGZhY3RvcnMsIHdoZXJlICQocC1rKSoyID4gcCtrJCwgaS5lLiwgJGsgPCBwLzMkLiBUaHVzLCB3aXRoIDQwIG1lbnRhbCBjYXBhY2l0eSBpdGVtcywgd2UgY2FuIGV4dHJhY3QgYSBtYXhpbXVtIG9mIDEzIGZhY3RvcnMuCgpUbyBkZXRlcm1pbmUgaG93IG1hbnkgZmFjdG9ycyB0byByZXRhaW4sIHdlIHVzZSB0aGUgZm9sbG93aW5nIHByZXNldCByZXRlbnRpb24gY3JpdGVyaWEsIGNvbnNpZGVyaW5nIHRoZSB1bnJvdGF0ZWQgbWF4aW1hbCBzb2x1dGlvbiAodW5sZXNzIG90aGVyd2lzZSBub3RlZCk6CgogIC0gRWFjaCBmYWN0b3IgbXVzdCBoYXZlIGFuIGVpZ2VudmFsdWUgPjEuMC4KICAtIEVhY2ggZmFjdG9yIG11c3QgaW5kaXZpZHVhbGx5IGFjY291bnQgZm9yID41JSBvZiB0aGUgdG90YWwgdmFyaWFuY2UgaW4gdGhlIG1heGltYWwgbW9kZWwuCiAgLSBBZnRlciByb3RhdGlvbiwgZWFjaCBmYWN0b3IgbXVzdCBiZSB0aGUgZG9taW5hbnQgZmFjdG9yIChpLmUuLCB0aGUgZmFjdG9yIHdpdGggdGhlIGhpZ2hlc3QgZmFjdG9yIGxvYWRpbmcpIGZvciDiiaUxIG1lbnRhbCBjYXBhY2l0eSBpdGVtLgoKV2UgdGhlbiBleGFtaW5lIGFuZCBpbnRlcnByZXQgdmFyaW1heC1yb3RhdGVkIHNvbHV0aW9ucywgZXh0cmFjdGluZyBvbmx5IHRoZSBudW1iZXIgb2YgZmFjdG9ycyB0aGF0IG1lZXQgdGhlc2UgY3JpdGVyaWEuCgojIFN0dWR5IDEKClN0dWR5IGluZm9ybWF0aW9uOgoKKiBEZXNpZ246IDIgY29uZGl0aW9ucyAoYmVldGxlLCByb2JvdCksIDMtcG9pbnQgcmVzcG9uc2Ugc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJoYXZlIGludGVudGlvbnMiCiogUG9wdWxhdGlvbjogYWR1bHRzCiogRGF0ZSBjb25kdWN0ZWQ6IDIwMTYtMDctMDYgKE1UdXJrKQoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzMSBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSAxIikKZGVtb0R1cmF0aW9uKCJzdHVkeSAxIikKZGVtb0FnZSgic3R1ZHkgMSIpCmRlbW9HZW5kZXIoInN0dWR5IDEiKQpkZW1vUmFjZSgic3R1ZHkgMSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczEgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkMV9hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDFfYWxsX3Vucm90YXRlZCA8LSBmYShkMV9hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMV9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QxX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QxX2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDFfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kMV9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczEgYWxsIHJvdGF0aW9ufQplZmFfZDFfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQxX2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDFfYWxsX3JvdGF0ZWQgPC0gZmEoZDFfYWxsLCBlZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kMV9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QxX2FsbCA8LSBlZmFfZDFfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QxX2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzMSBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QxX2FsbF9yb3RhdGVkTiA8LSBmYShkMV9hbGwsIG5mYWN0b3JzX2QxX2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QxX2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDFfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHMxIGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QxX2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgU3R1ZHkgMgoKU3R1ZHkgaW5mb3JtYXRpb246CgoqIERlc2lnbjogMiBjb25kaXRpb25zIChiZWV0bGUsIHJvYm90KSwgMy1wb2ludCByZXNwb25zZSBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgImhhdmUgaW50ZW50aW9ucyIKKiBQb3B1bGF0aW9uOiA3LTl5byBjaGlsZHJlbgoqIERhdGUgY29uZHVjdGVkOiBKdW5lIC0gRGVjZW1iZXIgMjAxNgoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzMiBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSAyIikKIyBkZW1vRHVyYXRpb24oInN0dWR5IDIiKQpkZW1vQWdlKCJzdHVkeSAyIikKZGVtb0dlbmRlcigic3R1ZHkgMiIpCiMgZGVtb1JhY2UoInN0dWR5IDIiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyBFeHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMKCiMjIyBTdGVwIDE6IFJ1biBtYXhpbWFsIEVGQSAod2l0aG91dCBhbmQgd2l0aCByb3RhdGlvbikKCmBgYHtyIHMyIGFsbCBubyByb3RhdGlvbn0KIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDJfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QyX2FsbF91bnJvdGF0ZWQgPC0gZmEoZDJfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDJfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kMl9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kMl9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QyX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDJfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMyIGFsbCByb3RhdGlvbn0KZWZhX2QyX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMl9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QyX2FsbF9yb3RhdGVkIDwtIGZhKGQyX2FsbCwgZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kMl9hbGwgPC0gZWZhX2QyX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kMl9hbGwKYGBgCgojIyMgU3RlcCAyOiBSdW4gRUZBIHdpdGggdmFyaW1heCByb3RhdGlvbgoKYGBge3IgczIgYWxsIHZhcmltYXggcm90YXRpb259CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMl9hbGxfcm90YXRlZE4gPC0gZmEoZDJfYWxsLCBuZmFjdG9yc19kMl9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMl9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QyX2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIyMgRmFjdG9yIGxvYWRpbmdzIHRhYmxlCgpgYGB7ciBzMiBsb2FkaW5ncyB0YWJsZX0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMl9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgojIFN0dWR5IDMgCgpTdHVkeSBpbmZvcm1hdGlvbjoKCiogRGVzaWduOiA3IGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QsIC4uLikgKyAyIGZvbGxvdy11cCBjb25kaXRpb25zLCAzLXBvaW50IHJlc3BvbnNlIHNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAiaGF2ZSBpbnRlbnRpb25zIgoqIFBvcHVsYXRpb246IDctOXlvIGNoaWxkcmVuCiogRGF0ZSBjb25kdWN0ZWQ6IEphbnVhcnkgLSBKdW5lIDIwMTcKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczMgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMyIpCiMgZGVtb0R1cmF0aW9uKCJzdHVkeSAzIikKIyBkZW1vQWdlKCJzdHVkeSAzIikKIyBkZW1vR2VuZGVyKCJzdHVkeSAzIikKIyBkZW1vUmFjZSgic3R1ZHkgMyIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczMgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkM19hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDNfYWxsX3Vucm90YXRlZCA8LSBmYShkM19hbGwsIDYsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QzX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDNfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDNfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kM19hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kM19hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2QzX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzMyBhbGwgcm90YXRpb259CmVmYV9kM19hbGxfcm90YXRlZF9tYXggPC0gZmEoZDNfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kM19hbGxfcm90YXRlZCA8LSBmYShkM19hbGwsIGVmYV9kM19hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2QzX2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDNfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDNfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDNfYWxsIDwtIGVmYV9kM19hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDNfYWxsCmBgYAoKIyMjIFN0ZXAgMjogUnVuIEVGQSB3aXRoIHZhcmltYXggcm90YXRpb24KCmBgYHtyIHMzIGFsbCB2YXJpbWF4IHJvdGF0aW9ufQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDNfYWxsX3JvdGF0ZWROIDwtIGZhKGQzX2FsbCwgbmZhY3RvcnNfZDNfYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDNfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kM19hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2QzX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyMjIEZhY3RvciBsb2FkaW5ncyB0YWJsZQoKYGBge3IgczMgbG9hZGluZ3MgdGFibGV9CmRhdGEuZnJhbWUobG9hZGluZ3MoZmEuc29ydChlZmFfZDNfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKIyMjIFN1YnNjYWxlcwoKIyMjIyBSZWxpYWJpbGl0eSAoYW5kIGludGVyY29ycmVsYXRpb25zIC0gc2VlIGFscGhhKQoKYGBge3IgczMgc3Vic2NhbGUgcmVsaWFiaWxpdHl9CiMgQ3JvbmJhY2gncyBhbHBoYSAoc3Vic2NhbGVzKQprZXlzLmxpc3QgPC0gbGlzdChTT1VMID0gYygicHJpZGUiLCAiZGVwcmVzc2VkIiwgImRpc3Jlc3BlY3RlZCIsICJndWlsdCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iYXJyYXNzZWQiLCAiaGFwcHkiLCAibG92ZSIpLAogICAgICAgICAgICAgICAgICBCT0RZID0gYygiaHVuZ3J5IiwgIm9kb3JzIiwgImZlYXIiLCAicGFpbiIsICJ0aXJlZCIsICJhbmdyeSIsICJuYXVzZWF0ZWQiKSwKICAgICAgICAgICAgICAgICAgTUlORCA9IGMoInJlYXNvbmluZyIsICJjaG9pY2VzIiwgInJlbWVtYmVyaW5nIiwgInRlbXBlcmF0dXJlIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zY2lvdXMiLCAiZGVwdGgiKSkgCnNjb3JlcyA8LSBzY29yZUl0ZW1zKGtleXMubGlzdCwgZDNfYWxsLCBtaW4gPSAwLCBtYXggPSAxKSAgIyBvciBqdXN0IHVzZSB0aGUga2V5cy5saXQKIyBzdW1tYXJ5KHNjb3JlcykKc2NvcmVzCgojIG9tZWdhCm9tZWdhKGQzX2FsbCwgcGxvdCA9IEYpCmBgYAoKIyBTdHVkeSA0CgpTdHVkeSBpbmZvcm1hdGlvbjoKCiogRGVzaWduOiA3IGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QsIC4uLikgKyAyIGZvbGxvdy11cCBjb25kaXRpb25zIChkb2xsLCB0ZWRkeSBiZWFyKSwgMy1wb2ludCByZXNwb25zZSBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgImhhdmUgaW50ZW50aW9ucyIKKiBQb3B1bGF0aW9uOiA0LTZ5byBjaGlsZHJlbgoqIERhdGUgY29uZHVjdGVkOiBNYXJjaCAyMDE3IC0gcHJlc2VudAoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzNCBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSA0IikKIyBkZW1vRHVyYXRpb24oInN0dWR5IDQiKQpkZW1vQWdlKCJzdHVkeSA0IikKIyBkZW1vR2VuZGVyKCJzdHVkeSA0IikKIyBkZW1vUmFjZSgic3R1ZHkgNCIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczQgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkNF9hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDRfYWxsX3Vucm90YXRlZCA8LSBmYShkNF9hbGwsIDYsIHJvdGF0ZSA9ICJub25lIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kNF9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2Q0X2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2Q0X2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDRfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczQgYWxsIHJvdGF0aW9ufQplZmFfZDRfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQ0X2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDRfYWxsX3JvdGF0ZWQgPC0gZmEoZDRfYWxsLCBlZmFfZDRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kNF9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2Q0X2FsbCA8LSBlZmFfZDRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2Q0X2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzNCBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2Q0X2FsbF9yb3RhdGVkTiA8LSBmYShkNF9hbGwsIG5mYWN0b3JzX2Q0X2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDRfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHM0IGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgQmlnIGZhY3RvciBsb2FkaW5ncyB0YWJsZSBmb3IgYWxsIHN0dWRpZXMgKFN0dWRpZXMgMS00KQoKYGBge3IgYWxsIHN0dWRpZXMgbG9hZGluZ3MgdGFibGV9CiMgbWFudWFsbHkgc2V0IDMgZmFjdG9ycwpvcmRlcl9zMV9tYW51YWwgPC0gbG9hZGluZ3MoZmEuc29ydChmYShkMV9hbGwsIG5mYWN0b3JzID0gMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSkpKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlcjFfbWFudWFsIikgJT4lCiAgcmVuYW1lKHMxX2hlYXJ0ID0gTVIyLCBzMV9ib2R5ID0gTVIxLCBzMV9taW5kID0gTVIzKQoKb3JkZXJfczEgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDFfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIxIikgJT4lCiAgcmVuYW1lKHMxX2hlYXJ0ID0gTVIyLCBzMV9ib2R5ID0gTVIxLCBzMV9taW5kID0gTVIzKQoKb3JkZXJfczIgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDJfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJlbmFtZShzMl9ib2R5ID0gTVIyLCBzMl9oZWFydCA9IE1SMSwgczJfbWluZCA9IE1SMykKCm9yZGVyX3MzIDwtIGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QzX2FsbF9yb3RhdGVkTikpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKSAlPiUKICByZW5hbWUoczNfYm9keSA9IE1SMSwgczNfaGVhcnQgPSBNUjIsIHMzX21pbmQgPSBNUjMpCgpvcmRlcl9zNCA8LSBsb2FkaW5ncyhmYS5zb3J0KGVmYV9kNF9hbGxfcm90YXRlZE4pKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcmVuYW1lKHM0X2JvZHkgPSBNUjEsIAogICAgICAgICAjIHM0X2hlYXJ0ID0gTVIzLCAKICAgICAgICAgczRfbWluZCA9IE1SMikKCiMgbWFudWFsbHkgc2V0IDMgZmFjdG9ycwpvcmRlcl9zNF9tYW51YWwgPC0gbG9hZGluZ3MoZmEuc29ydChmYShkMV9hbGwsIG5mYWN0b3JzID0gMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSkpKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlcjFfbWFudWFsIikgJT4lCiAgcmVuYW1lKHM0X2hlYXJ0ID0gTVIyLCBzNF9ib2R5ID0gTVIxLCBzNF9taW5kID0gTVIzKQoKYmlnVGFibGUgPC0gb3JkZXJfczFfbWFudWFsICU+JSAjIGNvdWxkIHN1YnN0aXR1dGUgb3JkZXJfczEKICBmdWxsX2pvaW4ob3JkZXJfczIpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zMykgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3M0X21hbnVhbCkgJT4lICMgY291bGQgc3Vic3RpdHV0ZSBvcmRlcl9zNAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJzIikpLCBmdW5zKHJvdW5kMikpICU+JQogIHNlbGVjdChvcmRlcjFfbWFudWFsLCAjIGNvdWxkIHN1YmlzdGl0dXRlIG9yZGVyX3MxCiAgICAgICAgIGNhcGFjaXR5LCBlbmRzX3dpdGgoImhlYXJ0IiksIGVuZHNfd2l0aCgiYm9keSIpLCBlbmRzX3dpdGgoIm1pbmQiKSkgCgpiaWdUYWJsZQpgYGAKCiMgRmlndXJlcwoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2hhcmFjdGVyIG1lYW5zLCBpbmNsdWRlID0gRn0KIyBib290c3RyYXAgOTUlIENJcyBmb3IgcmF0aW5ncyBieSBjaGFyYWN0ZXIgKG5vbnBhcmFtZXRyaWMpCiMgc3R1ZHkgMQpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczEgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInJlc3BvbnNlTnVtIiwKICAgICAgICAgICAgIHN1bW1hcnlfZnVuY3Rpb24gPSAibWVhbl9uYSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImNoYXJhY3RlciIsICJjYXBhY2l0eSIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJjaV9sb3dlcl9uYSIsICJtZWFuX25hIiwgImNpX3VwcGVyX25hIikpICU+JQogIGZ1bGxfam9pbihkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMSIpICU+JSBmaWx0ZXIoY2hhcmFjdGVyICE9ICJhbGwiKSkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDEiKQoKIyBzdHVkeSAyCmNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMiA8LSBkMiAlPiUgCiAgc2VsZWN0KHN1YmlkLCBjaGFyYWN0ZXIsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAicmVzcG9uc2VOdW0iLAogICAgICAgICAgICAgc3VtbWFyeV9mdW5jdGlvbiA9ICJtZWFuX25hIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiY2hhcmFjdGVyIiwgImNhcGFjaXR5IiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoImNpX2xvd2VyX25hIiwgIm1lYW5fbmEiLCAiY2lfdXBwZXJfbmEiKSkgJT4lCiAgZnVsbF9qb2luKGRlbW9TYW1wbGVTaXplKCJzdHVkeSAyIikgJT4lIGZpbHRlcihjaGFyYWN0ZXIgIT0gImFsbCIpKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMiIpCgojIHN0dWR5IDMKY2hhcl9wbG90dGluZ19yYXRpbmdzX3MzIDwtIGQzICU+JSAKICBzZWxlY3Qoc3ViaWQsIGNoYXJhY3RlciwgY2FwYWNpdHksIHJlc3BvbnNlTnVtKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJyZXNwb25zZU51bSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2Z1bmN0aW9uID0gIm1lYW5fbmEiLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJjaGFyYWN0ZXIiLCAiY2FwYWNpdHkiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygiY2lfbG93ZXJfbmEiLCAibWVhbl9uYSIsICJjaV91cHBlcl9uYSIpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDMiKSAlPiUgZmlsdGVyKGNoYXJhY3RlciAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAzIikKCiMgc3R1ZHkgNApjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczQgPC0gZDQgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInJlc3BvbnNlTnVtIiwKICAgICAgICAgICAgIHN1bW1hcnlfZnVuY3Rpb24gPSAibWVhbl9uYSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImNoYXJhY3RlciIsICJjYXBhY2l0eSIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJjaV9sb3dlcl9uYSIsICJtZWFuX25hIiwgImNpX3VwcGVyX25hIikpICU+JQogIGZ1bGxfam9pbihkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgNCIpICU+JSBmaWx0ZXIoY2hhcmFjdGVyICE9ICJhbGwiKSkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDQiKQpgYGAKCmBgYHtyIHBsb3R0aW5nIHNldHVwIGNoYXJhY3RlciBtZWFucyBtZXJnZSwgaW5jbHVkZSA9IEZ9CmNoYXJfcGxvdHRpbmdfcmF0aW5nc19hbGwgPC0gY2hhcl9wbG90dGluZ19yYXRpbmdzX3MxICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczIpICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczMpICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczQpICU+JQogIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIG11dGF0ZShzdHVkeSA9IGZhY3RvcihzdHVkeSksCiAgICAgICAgIGNvbmRpdGlvbiA9IGZhY3RvcihjaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJkb2xsIiwgInRlZGR5X2JlYXIiLCAicm9ib3QiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSkpCmBgYAoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2FwYWNpdHkgd29yZGluZ3MsIGluY2x1ZGUgPSBGfQpjaGFyX3Bsb3R0aW5nX3dvcmRpbmdzIDwtIGNoYXJfcGxvdHRpbmdfcmF0aW5nc19hbGwgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdChjYXBhY2l0eSkgJT4lCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoY2FwYWNpdHksCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2UuLi4gY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLi4uIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2suLi4iLAogICAgICAgICAgIHNhZmUgPSAiZmVlbCBzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImZlZWwgbG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUgd2l0aCBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBndWlsdCA9ICJmZWVsIGd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImdldCBodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIHdoYXQgdG8gZG8iLAogICAgICAgICAgIGNob2ljZXMgPSAibWFrZSBjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbC4uLiIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMuLi4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICBkZXNpcmVzID0gImhhdmUgZGVzaXJlcy4uLiIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5Li4uIiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLi4uIiwKICAgICAgICAgICBwcm91ZCA9ICJmZWVsIHByb3VkIikpKQpgYGAKCmBgYHtyIHBsb3R0aW5nIHNldHVwIGxvYWRpbmdzLCBpbmNsdWRlID0gRn0KIyBtZXJnZSB3aXRoIGxvYWRpbmdzLCBvcmRlcmluZ3MsIGFuZCBkb21pbmFudCBmYWN0b3JzIGZyb20gZWFjaCBzdHVkeSAKY2hhcl9wbG90dGluZyA8LSBjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfYWxsICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3dvcmRpbmdzKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczEgJT4lCiAgICAgICAgICAgICAgcmVuYW1lKHMxX01SMSA9IHMxX2JvZHksIHMxX01SMiA9IHMxX2hlYXJ0LCBzMV9NUjMgPSBzMV9taW5kKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczFfTVIxX2FicyA9IGFicyhzMV9NUjEpLAogICAgICAgICAgICAgICAgICAgICBzMV9NUjJfYWJzID0gYWJzKHMxX01SMiksCiAgICAgICAgICAgICAgICAgICAgIHMxX01SM19hYnMgPSBhYnMoczFfTVIzKSwKICAgICAgICAgICAgICAgICAgICAgczFfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMxX01SMV9hYnMgPiBzMV9NUjJfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9NUjFfYWJzID4gczFfTVIzX2FicywgIkJPRFkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczFfTVIyX2FicyA+IHMxX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9NUjJfYWJzID4gczFfTVIzX2FicywgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMV9NUjNfYWJzID4gczFfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9NUjNfYWJzID4gczFfTVIyX2FicywgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgICAgICAgICAgICAgICAgICBzMV9jb2xvciA9IHJlY29kZShzMV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCT0RZIiA9ICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIiA9ICIjMzc3RUI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiID0gIiM0REFGNEEiKSwKICAgICAgICAgICAgICAgICAgICAgczFfb3JkZXIgPSBhcy5udW1lcmljKG9yZGVyMSkpICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtczFfTVIxX2FicywgLXMxX01SMl9hYnMsIC1zMV9NUjNfYWJzKSkgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3MyICU+JQogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUKICAgICAgICAgICAgICByZW5hbWUoczJfTVIxID0gczJfaGVhcnQsIHMyX01SMiA9IHMyX2JvZHksIHMyX01SMyA9IHMyX21pbmQpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzMl9NUjFfYWJzID0gYWJzKHMyX01SMSksCiAgICAgICAgICAgICAgICAgICAgIHMyX01SMl9hYnMgPSBhYnMoczJfTVIyKSwKICAgICAgICAgICAgICAgICAgICAgczJfTVIzX2FicyA9IGFicyhzMl9NUjMpLAogICAgICAgICAgICAgICAgICAgICBzMl9mYWN0b3IgPSAKICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczJfTVIxX2FicyA+IHMyX01SMl9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyX01SMV9hYnMgPiBzMl9NUjNfYWJzLCAiQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMl9NUjJfYWJzID4gczJfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyX01SMl9hYnMgPiBzMl9NUjNfYWJzLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMyX01SM19hYnMgPiBzMl9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyX01SM19hYnMgPiBzMl9NUjJfYWJzLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICAgICAgICAgICAgICAgICAgIHMyX2NvbG9yID0gcmVjb2RlKHMyX2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkiID0gIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiID0gIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIgPSAiIzREQUY0QSIpKSAlPiUKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4odmFyID0gInMyX29yZGVyIikgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMyX29yZGVyID0gYXMubnVtZXJpYyhzMl9vcmRlcikpICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtczJfTVIxX2FicywgLXMyX01SMl9hYnMsIC1zMl9NUjNfYWJzKSkgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3MzICU+JQogICAgICAgICAgICAgIHJlbmFtZShzM19NUjEgPSBzM19oZWFydCwgczNfTVIyID0gczNfYm9keSwgczNfTVIzID0gczNfbWluZCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMzX01SMV9hYnMgPSBhYnMoczNfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczNfTVIyX2FicyA9IGFicyhzM19NUjIpLAogICAgICAgICAgICAgICAgICAgICBzM19NUjNfYWJzID0gYWJzKHMzX01SMyksCiAgICAgICAgICAgICAgICAgICAgIHMzX2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzM19NUjFfYWJzID4gczNfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIxX2FicyA+IHMzX01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMzX01SMl9hYnMgPiBzM19NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIyX2FicyA+IHMzX01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczNfTVIzX2FicyA+IHMzX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIzX2FicyA+IHMzX01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczNfY29sb3IgPSByZWNvZGUoczNfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjNERBRjRBIikpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiczNfb3JkZXIiKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczNfb3JkZXIgPSBhcy5udW1lcmljKHMzX29yZGVyKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zM19NUjFfYWJzLCAtczNfTVIyX2FicywgLXMzX01SM19hYnMpKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczQgJT4lCiAgICAgICAgICAgICAgcmVuYW1lKHM0X01SMSA9IHM0X2JvZHksIHM0X01SMiA9IHM0X21pbmQpICU+JSAjLCBzNF9NUjMgPSBzNF9oZWFydCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHM0X01SMV9hYnMgPSBhYnMoczRfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczRfTVIyX2FicyA9IGFicyhzNF9NUjIpLAogICAgICAgICAgICAgICAgICAgICAjIHM0X01SM19hYnMgPSBhYnMoczRfTVIzKSwKICAgICAgICAgICAgICAgICAgICAgczRfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHM0X01SMV9hYnMgPiBzNF9NUjJfYWJzLCAiQk9EWSIsICJNSU5EIiksCiAgICAgICAgICAgICAgICAgICAgICMgczRfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICMgICBpZmVsc2UoczRfTVIxX2FicyA+IHM0X01SMl9hYnMgJgogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgczRfTVIxX2FicyA+IHM0X01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICBpZmVsc2UoczRfTVIyX2FicyA+IHM0X01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgIHM0X01SMl9hYnMgPiBzNF9NUjNfYWJzLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICBpZmVsc2UoczRfTVIzX2FicyA+IHM0X01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICBzNF9NUjNfYWJzID4gczRfTVIyX2FicywgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICAgICAgICAgICAgICAgICAgIHM0X2NvbG9yID0gcmVjb2RlKHM0X2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkiID0gIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiID0gIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIgPSAiIzREQUY0QSIpKSAlPiUKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4odmFyID0gInM0X29yZGVyIikgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHM0X29yZGVyID0gYXMubnVtZXJpYyhzNF9vcmRlcikpICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtczRfTVIxX2FicywgLXM0X01SMl9hYnMpKSAjLCAtczRfTVIzX2FicykpCgojIGNvbmZpZ3VyZSBwbG90IGxhYmVscwpsYWJlbF9kZl9zMSA8LSBjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDEiKSAlPiUgc2VsZWN0KGNvbmRpdGlvbiwgbikgJT4lIHVuaXF1ZSgpCmxhYmVsX2RmX3MyIDwtIGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMiIpICU+JSBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKbGFiZWxfZGZfczMgPC0gY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAzIikgJT4lIHNlbGVjdChjb25kaXRpb24sIG4pICU+JSB1bmlxdWUoKQpsYWJlbF9kZl9zNCA8LSBjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDQiKSAlPiUgc2VsZWN0KGNvbmRpdGlvbiwgbikgJT4lIHVuaXF1ZSgpCgpmYWNldExhYnNfczEgPC0gZ3N1YigiIFxcKCIsICJcbigiLCBtYWtlRmFjZXRMYWJzKGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMSIpKSkKZmFjZXRMYWJzX3MyIDwtIGdzdWIoIiBcXCgiLCAiXG4oIiwgbWFrZUZhY2V0TGFicyhjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDIiKSkpCmZhY2V0TGFic19zMyA8LSBnc3ViKCIgXFwoIiwgIlxuKCIsIG1ha2VGYWNldExhYnMoY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAzIikpKQpmYWNldExhYnNfczQgPC0gZ3N1YigiIFxcKCIsICJcbigiLCBtYWtlRmFjZXRMYWJzKGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgNCIpKSkKCiMgY29uZmlndXJlIGN1c3RvbSBwYWxldHRlCm15UGFsZXR0ZSA8LSBicmV3ZXIucGFsKDMsICJTZXQxIik7IG5hbWVzKG15UGFsZXR0ZSkgPC0gYygiSEVBUlQiLCAiQk9EWSIsICJNSU5EIikKCnBhbGV0dGVfYmFzZSA8LSBjaGFyX3Bsb3R0aW5nICU+JSAKICBzZWxlY3QoY2FwYWNpdHksIGVuZHNfd2l0aCgiX2ZhY3RvciIpKSAlPiUKICBkaXN0aW5jdCgpCiMgYWRqdXN0IGJ5IGhhbmQgZGVwZW5kaW5nIG9uIG9yZGVyIG9mIGZhY3RvcnMhIQpwYWxldHRlX3MxIDwtIGMocmVwKG15UGFsZXR0ZVsiTUlORCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIk1JTkQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSkpCnBhbGV0dGVfczIgPC0gYyhyZXAobXlQYWxldHRlWyJNSU5EIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMyX2ZhY3RvciA9PSAiTUlORCIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkJPRFkiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczJfZmFjdG9yID09ICJCT0RZIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiSEVBUlQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczJfZmFjdG9yID09ICJIRUFSVCIpICU+JSBjb3VudCgpKSkKcGFsZXR0ZV9zMyA8LSBjKHJlcChteVBhbGV0dGVbIk1JTkQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczNfZmFjdG9yID09ICJNSU5EIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzM19mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzM19mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpKQojIHBhbGV0dGVfczQgPC0gYyhyZXAobXlQYWxldHRlWyJNSU5EIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHM0X2ZhY3RvciA9PSAiTUlORCIpICU+JSBjb3VudCgpKSwKIyAgICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiSEVBUlQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczRfZmFjdG9yID09ICJIRUFSVCIpICU+JSBjb3VudCgpKSwKIyAgICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzNF9mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSkpCmBgYAoKIyMgM0Qgc2NhdHRlcnBsb3RzCgpGYWN0b3IgbG9hZGluZ3MgZm9yIHRoZSA0MCBtZW50YWwgY2FwYWNpdGllcyBvbiB0aGUgdGhyZWUgcm90YXRlZCBmYWN0b3JzIGluIFN0dWR5IDEuIEl0ZW1zIGFyZSBjb2xvcmVkIGJ5IHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nOiBJdGVtcyB0aGF0IGxvYWRlZCBtb3N0IHN0cm9uZ2x5IG9uIHRoZSBib2R5IGZhY3RvciAoYm9kaWx5IHN0YXRlcyBhbmQgd2lsbCkgYXJlIGluIHJlZDsgaXRlbXMgdGhhdCBsb2FkZWQgbW9zdCBzdHJvbmdseSBvbiB0aGUgaGVhcnQgZmFjdG9yIChzb2NpYWwtZW1vdGlvbmFsIGV4cGVyaWVuY2VzIGFuZCBtb3JhbGl0eSkgYXJlIGluIGJsdWU7IGFuZCBpdGVtcyB0aGF0IGxvYWRlZCBtb3N0IHN0cm9uZ2x5IG9uIHRoZSBtaW5kIGZhY3RvciAocGVyY2VwdHVhbC1jb2duaXRpdmUgYWJpbGl0aWVzIGFuZCBnb2FsIHB1cnN1aXQpIGFyZSBpbiBncmVlbi4KCiMjIyBTdHVkeSAxIChhZHVsdHMpCgpgYGB7ciBmaWd1cmUgM2Qgc2NhdHRlciBzMX0KIyBzZXQgdXAgbGFiZWxzIGZvciBwbG90IChzaG9ydGVuZWQgdmVyc2lvbiBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMpCndvcmRpbmdfczEgPC0gbG9hZGluZ3MoZWZhX2QxX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgc2VsZWN0KGl0ZW0pICU+JQogIG11dGF0ZSh3b3JkaW5nID0gZmFjdG9yKAogICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2Ugd2hldGhlciBzb21ldGhpbmcgaXMgY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLCBsaWtlIHdoZW4geW91IHRoaW5rIHNvbWV0aGluZyBpcyB0cnVlIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2ssIGxpa2Ugd2hlbiB5b3UgZmVlbCBsaWtlIHlvdSBtaWdodCB0aHJvdyB1cCIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLCBsaWtlIHdoZW4geW91IHN0b3AgeW91cnNlbGYgZnJvbSBkb2luZyBzb21ldGhpbmcgeW91IHNob3VsZG4ndCBkbyIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMsIGxpa2Ugd2hlbiB5b3UncmUgd29ya2luZyBoYXJkIHRvIGRvIHNvbWV0aGluZyBvciBtYWtlIHNvbWV0aGluZyBoYXBwZW4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICBkZXNpcmVzID0gImhhdmUgZGVzaXJlcywgbGlrZSB3aGVuIHlvdSByZWFsbHkgd2FudCBzb21ldGhpbmciLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImZlZWwgZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJ1bmRlcnN0YW5kIGhvdyBzb21lYm9keSBlbHNlIGlzIGZlZWxpbmciLAogICAgICAgICAgIGpveSA9ICJmZWVsIGpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAia25vdyB3aGF0J3MgbmljZSBhbmQgd2hhdCdzIG1lYW4iLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eSwgbGlrZSB3aGVuIHNvbWVvbmUgaXMgc2h5IGFuZCBzb21lYm9keSBlbHNlIGlzIHNpbGx5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLCBsaWtlIHdoZW4gc29tZXRoaW5nIGZlZWxzIHJlYWxseSBnb29kIiwKICAgICAgICAgICBwcm91ZCA9ICJmZWVsIHByb3VkIikpKSAlPiUKICAgIG11dGF0ZShzaG9ydCA9IGZhY3RvcigKICAgICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgICBoYXBweSA9ICJoYXBweSIsCiAgICAgICAgICAgICBkZXByZXNzZWQgPSAic2FkIiwKICAgICAgICAgICBmZWFyID0gInNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwiLAogICAgICAgICAgIGRlcHRoID0gImRlcHRoIiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAibWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAidGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJiZWxpZWZzIiwKICAgICAgICAgICBodW5ncnkgPSAiaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJ0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAic2ljayIsCiAgICAgICAgICAgc2FmZSA9ICJzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJzZWxmLWNvbnRyb2wiLAogICAgICAgICAgIGludGVudGlvbnMgPSAicGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiZ29hbHMiLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJhd2FyZSIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJzZWxmLWF3YXJlIiwKICAgICAgICAgICBkZXNpcmVzID0gImRlc2lyZXMiLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAiZW1wYXRoeSIsCiAgICAgICAgICAgam95ID0gImpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAibW9yYWxpdHkiLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gInBlcnNvbmFsaXR5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJwbGVhc3VyZSIsCiAgICAgICAgICAgcHJvdWQgPSAicHJvdWQiKSkpCgojIG1ha2UgZGF0YWZyYW1lIGZvciBwbG90dGluZwpzY2F0dGVyX3Bsb3R0aW5nIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHJlbmFtZShCT0RZID0gTVIxLAogICAgICAgICBIRUFSVCA9IE1SMiwKICAgICAgICAgTUlORCA9IE1SMykgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczEpICU+JQogIG11dGF0ZShkb21pbmFudCA9IGZhY3RvcigKICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksICJCT0RZIiwKICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpLAogICAgc2l6ZSA9IGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksIGFicyhCT0RZKSwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksIGFicyhIRUFSVCksCiAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCBhYnMoTUlORCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICBjb2xvciA9IGlmZWxzZShkb21pbmFudCA9PSAiQk9EWSIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiSEVBUlQiLCAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJNSU5EIiwgIiM0REFGNEEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgcGxvdCEKZmlnUzEgPC0gcGxvdF9seShzY2F0dGVyX3Bsb3R0aW5nLCB4ID0gfkhFQVJULCB5ID0gfkJPRFksIHogPSB+TUlORCwKICAgICAgICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwKICAgICAgICAgICAgIGNvbG9yID0gfmRvbWluYW50LCBjb2xvcnMgPSBjKCIjMzc3RUI4IiwgIiM0REFGNEEiLCAiI0U0MUExQyIpLAogICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gNCksCiAgICAgICAgICAgICB0ZXh0ID0gfnNob3J0LAogICAgICAgICAgICAgdGV4dGZvbnQgPSBsaXN0KHNpemUgPSAxNSksCiAgICAgICAgICAgICBtb2RlID0gInRleHQrbWFya2VycyIsCiAgICAgICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkKCmZpZ1MxCmBgYAoKIyMjIFN0dWR5IDIgKDctOXlvKQoKYGBge3IgZmlndXJlIDNkIHNjYXR0ZXIgczJ9CiMgc2V0IHVwIGxhYmVscyBmb3IgcGxvdCAoc2hvcnRlbmVkIHZlcnNpb24gb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zKQp3b3JkaW5nX3MyIDwtIGxvYWRpbmdzKGVmYV9kMl9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHNlbGVjdChpdGVtKSAlPiUKICBtdXRhdGUod29yZGluZyA9IGZhY3RvcigKICAgIHJlY29kZShpdGVtLAogICAgICAgICAgIGhhcHB5ID0gImZlZWwgaGFwcHkiLAogICAgICAgICAgIGRlcHJlc3NlZCA9ICJmZWVsIHNhZCIsCiAgICAgICAgICAgZmVhciA9ICJmZWVsIHNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiZ2V0IGFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImZlZWwgY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIgc291bmRzIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIHRoaW5ncyIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAic2Vuc2UgdGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCB0aGluZ3MiLAogICAgICAgICAgIGRlcHRoID0gInNlbnNlIHdoZXRoZXIgc29tZXRoaW5nIGlzIGNsb3NlIGJ5IG9yIGZhciBhd2F5IiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAiZG8gbWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAiaGF2ZSB0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaW5ncyIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIgdGhpbmdzIiwKICAgICAgICAgICBiZWxpZWZzID0gImhhdmUgYmVsaWVmcywgbGlrZSB3aGVuIHlvdSB0aGluayBzb21ldGhpbmcgaXMgdHJ1ZSIsCiAgICAgICAgICAgaHVuZ3J5ID0gImdldCBodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gImZlZWwgdGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAiZmVlbCBwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAiZmVlbCBzaWNrLCBsaWtlIHdoZW4geW91IGZlZWwgbGlrZSB5b3UgbWlnaHQgdGhyb3cgdXAiLAogICAgICAgICAgIHNhZmUgPSAiZmVlbCBzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImZlZWwgbG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUgd2l0aCBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBndWlsdCA9ICJmZWVsIGd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImdldCBodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIHdoYXQgdG8gZG8iLAogICAgICAgICAgIGNob2ljZXMgPSAibWFrZSBjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbCwgbGlrZSB3aGVuIHlvdSBzdG9wIHlvdXJzZWxmIGZyb20gZG9pbmcgc29tZXRoaW5nIHlvdSBzaG91bGRuJ3QgZG8iLAogICAgICAgICAgIGludGVudGlvbnMgPSAibWFrZSBwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJoYXZlIGdvYWxzLCBsaWtlIHdoZW4geW91J3JlIHdvcmtpbmcgaGFyZCB0byBkbyBzb21ldGhpbmcgb3IgbWFrZSBzb21ldGhpbmcgaGFwcGVuIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYmUgYXdhcmUgb2YgdGhpbmdzIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gImJlIGF3YXJlIG9mIGl0c2VsZiIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJoYXZlIGRlc2lyZXMsIGxpa2Ugd2hlbiB5b3UgcmVhbGx5IHdhbnQgc29tZXRoaW5nIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJmZWVsIGVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZCBob3cgc29tZWJvZHkgZWxzZSBpcyBmZWVsaW5nIiwKICAgICAgICAgICBqb3kgPSAiZmVlbCBqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gImtub3cgd2hhdCdzIG5pY2UgYW5kIHdoYXQncyBtZWFuIiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJoYXZlIGEgcGVyc29uYWxpdHksIGxpa2Ugd2hlbiBzb21lb25lIGlzIHNoeSBhbmQgc29tZWJvZHkgZWxzZSBpcyBzaWxseSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAiZmVlbCBwbGVhc3VyZSwgbGlrZSB3aGVuIHNvbWV0aGluZyBmZWVscyByZWFsbHkgZ29vZCIsCiAgICAgICAgICAgcHJvdWQgPSAiZmVlbCBwcm91ZCIpKSkgJT4lCiAgICBtdXRhdGUoc2hvcnQgPSBmYWN0b3IoCiAgICAgIHJlY29kZShpdGVtLAogICAgICAgICAgICAgaGFwcHkgPSAiaGFwcHkiLAogICAgICAgICAgICAgZGVwcmVzc2VkID0gInNhZCIsCiAgICAgICAgICAgZmVhciA9ICJzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJ0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIiwKICAgICAgICAgICBkZXB0aCA9ICJkZXB0aCIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gIm1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gInRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIiLAogICAgICAgICAgIGJlbGllZnMgPSAiYmVsaWVmcyIsCiAgICAgICAgICAgaHVuZ3J5ID0gImh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAidGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAicGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gInNpY2siLAogICAgICAgICAgIHNhZmUgPSAic2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUiLAogICAgICAgICAgIGd1aWx0ID0gImd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUiLAogICAgICAgICAgIGNob2ljZXMgPSAiY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAic2VsZi1jb250cm9sIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gInBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImdvYWxzIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYXdhcmUiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAic2VsZi1hd2FyZSIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJkZXNpcmVzIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gImVtcGF0aHkiLAogICAgICAgICAgIGpveSA9ICJqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gIm1vcmFsaXR5IiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJwZXJzb25hbGl0eSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAicGxlYXN1cmUiLAogICAgICAgICAgIHByb3VkID0gInByb3VkIikpKQoKIyBtYWtlIGRhdGFmcmFtZSBmb3IgcGxvdHRpbmcKc2NhdHRlcl9wbG90dGluZyA8LSBsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICByZW5hbWUoQk9EWSA9IE1SMSwKICAgICAgICAgSEVBUlQgPSBNUjIsCiAgICAgICAgIE1JTkQgPSBNUjMpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MyKSAlPiUKICBtdXRhdGUoZG9taW5hbnQgPSBmYWN0b3IoCiAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCAiQk9EWSIsCiAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKSwKICAgIHNpemUgPSBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCBhYnMoQk9EWSksCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCBhYnMoSEVBUlQpLAogICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgYWJzKE1JTkQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgY29sb3IgPSBpZmVsc2UoZG9taW5hbnQgPT0gIkJPRFkiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIkhFQVJUIiwgIiM0REFGNEEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiTUlORCIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpCgojIHBsb3QhCmZpZ1MyIDwtIHBsb3RfbHkoc2NhdHRlcl9wbG90dGluZywgeCA9IH5IRUFSVCwgeSA9IH5CT0RZLCB6ID0gfk1JTkQsCiAgICAgICAgICAgICB0eXBlID0gInNjYXR0ZXIzZCIsCiAgICAgICAgICAgICBjb2xvciA9IH5kb21pbmFudCwgY29sb3JzID0gYygiIzM3N0VCOCIsICIjNERBRjRBIiwgIiNFNDFBMUMiKSwKICAgICAgICAgICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDQpLAogICAgICAgICAgICAgdGV4dCA9IH5zaG9ydCwKICAgICAgICAgICAgIHRleHRmb250ID0gbGlzdChzaXplID0gMTUpLAogICAgICAgICAgICAgbW9kZSA9ICJ0ZXh0K21hcmtlcnMiLAogICAgICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpCgpmaWdTMgpgYGAKCiMjIyBTdHVkeSAzICg3LTl5bykKCmBgYHtyIGZpZ3VyZSAzZCBzY2F0dGVyIHMzfQojIHNldCB1cCBsYWJlbHMgZm9yIHBsb3QgKHNob3J0ZW5lZCB2ZXJzaW9uIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcykKd29yZGluZ19zMyA8LSBsb2FkaW5ncyhlZmFfZDNfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBzZWxlY3QoaXRlbSkgJT4lCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMsIGxpa2Ugd2hlbiB5b3UgdGhpbmsgc29tZXRoaW5nIGlzIHRydWUiLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljaywgbGlrZSB3aGVuIHlvdSBmZWVsIGxpa2UgeW91IG1pZ2h0IHRocm93IHVwIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wsIGxpa2Ugd2hlbiB5b3Ugc3RvcCB5b3Vyc2VsZiBmcm9tIGRvaW5nIHNvbWV0aGluZyB5b3Ugc2hvdWxkbid0IGRvIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2FscywgbGlrZSB3aGVuIHlvdSdyZSB3b3JraW5nIGhhcmQgdG8gZG8gc29tZXRoaW5nIG9yIG1ha2Ugc29tZXRoaW5nIGhhcHBlbiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLCBsaWtlIHdoZW4geW91IHJlYWxseSB3YW50IHNvbWV0aGluZyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5LCBsaWtlIHdoZW4gc29tZW9uZSBpcyBzaHkgYW5kIHNvbWVib2R5IGVsc2UgaXMgc2lsbHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUsIGxpa2Ugd2hlbiBzb21ldGhpbmcgZmVlbHMgcmVhbGx5IGdvb2QiLAogICAgICAgICAgIHByb3VkID0gImZlZWwgcHJvdWQiKSkpICU+JQogICAgbXV0YXRlKHNob3J0ID0gZmFjdG9yKAogICAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICAgIGhhcHB5ID0gImhhcHB5IiwKICAgICAgICAgICAgIGRlcHJlc3NlZCA9ICJzYWQiLAogICAgICAgICAgIGZlYXIgPSAic2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAidGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCIsCiAgICAgICAgICAgZGVwdGggPSAiZGVwdGgiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJ0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIiwKICAgICAgICAgICBiZWxpZWZzID0gImJlbGllZnMiLAogICAgICAgICAgIGh1bmdyeSA9ICJodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gInRpcmVkIiwKICAgICAgICAgICBwYWluID0gInBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJzaWNrIiwKICAgICAgICAgICBzYWZlID0gInNhZmUiLAogICAgICAgICAgIGxvdmUgPSAibG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIiwKICAgICAgICAgICBndWlsdCA9ICJndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIiwKICAgICAgICAgICBjaG9pY2VzID0gImNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gInNlbGYtY29udHJvbCIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJnb2FscyIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImF3YXJlIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gInNlbGYtYXdhcmUiLAogICAgICAgICAgIGRlc2lyZXMgPSAiZGVzaXJlcyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJlbXBhdGh5IiwKICAgICAgICAgICBqb3kgPSAiam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJtb3JhbGl0eSIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAicGVyc29uYWxpdHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gInBsZWFzdXJlIiwKICAgICAgICAgICBwcm91ZCA9ICJwcm91ZCIpKSkKCiMgbWFrZSBkYXRhZnJhbWUgZm9yIHBsb3R0aW5nCnNjYXR0ZXJfcGxvdHRpbmcgPC0gbG9hZGluZ3MoZWZhX2QzX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgcmVuYW1lKEJPRFkgPSBNUjEsCiAgICAgICAgIEhFQVJUID0gTVIyLAogICAgICAgICBNSU5EID0gTVIzKSAlPiUKICBmdWxsX2pvaW4od29yZGluZ19zMykgJT4lCiAgbXV0YXRlKGRvbWluYW50ID0gZmFjdG9yKAogICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgIkJPRFkiLAogICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSksCiAgICBzaXplID0gaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgYWJzKEJPRFkpLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgYWJzKEhFQVJUKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksIGFicyhNSU5EKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgIGNvbG9yID0gaWZlbHNlKGRvbWluYW50ID09ICJCT0RZIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJIRUFSVCIsICIjNERBRjRBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIk1JTkQiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBwbG90IQpmaWdzMyA8LSBwbG90X2x5KHNjYXR0ZXJfcGxvdHRpbmcsIHggPSB+SEVBUlQsIHkgPSB+Qk9EWSwgeiA9IH5NSU5ELAogICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyM2QiLAogICAgICAgICAgICAgY29sb3IgPSB+ZG9taW5hbnQsIGNvbG9ycyA9IGMoIiMzNzdFQjgiLCAiIzREQUY0QSIsICIjRTQxQTFDIiksCiAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KHNpemUgPSA0KSwKICAgICAgICAgICAgIHRleHQgPSB+c2hvcnQsCiAgICAgICAgICAgICB0ZXh0Zm9udCA9IGxpc3Qoc2l6ZSA9IDE1KSwKICAgICAgICAgICAgIG1vZGUgPSAidGV4dCttYXJrZXJzIiwKICAgICAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKQoKZmlnczMKYGBgCgojIyMgU3R1ZHkgNCAoNC02eW8pCgpgYGB7ciBmaWd1cmUgM2Qgc2NhdHRlciBzNH0KIyBzZXQgdXAgbGFiZWxzIGZvciBwbG90IChzaG9ydGVuZWQgdmVyc2lvbiBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMpCndvcmRpbmdfczQgPC0gbG9hZGluZ3MoZWZhX2Q0X2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgc2VsZWN0KGl0ZW0pICU+JQogIG11dGF0ZSh3b3JkaW5nID0gZmFjdG9yKAogICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2Ugd2hldGhlciBzb21ldGhpbmcgaXMgY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLCBsaWtlIHdoZW4geW91IHRoaW5rIHNvbWV0aGluZyBpcyB0cnVlIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2ssIGxpa2Ugd2hlbiB5b3UgZmVlbCBsaWtlIHlvdSBtaWdodCB0aHJvdyB1cCIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLCBsaWtlIHdoZW4geW91IHN0b3AgeW91cnNlbGYgZnJvbSBkb2luZyBzb21ldGhpbmcgeW91IHNob3VsZG4ndCBkbyIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMsIGxpa2Ugd2hlbiB5b3UncmUgd29ya2luZyBoYXJkIHRvIGRvIHNvbWV0aGluZyBvciBtYWtlIHNvbWV0aGluZyBoYXBwZW4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICBkZXNpcmVzID0gImhhdmUgZGVzaXJlcywgbGlrZSB3aGVuIHlvdSByZWFsbHkgd2FudCBzb21ldGhpbmciLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImZlZWwgZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJ1bmRlcnN0YW5kIGhvdyBzb21lYm9keSBlbHNlIGlzIGZlZWxpbmciLAogICAgICAgICAgIGpveSA9ICJmZWVsIGpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAia25vdyB3aGF0J3MgbmljZSBhbmQgd2hhdCdzIG1lYW4iLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eSwgbGlrZSB3aGVuIHNvbWVvbmUgaXMgc2h5IGFuZCBzb21lYm9keSBlbHNlIGlzIHNpbGx5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLCBsaWtlIHdoZW4gc29tZXRoaW5nIGZlZWxzIHJlYWxseSBnb29kIiwKICAgICAgICAgICBwcm91ZCA9ICJmZWVsIHByb3VkIikpKSAlPiUKICAgIG11dGF0ZShzaG9ydCA9IGZhY3RvcigKICAgICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgICBoYXBweSA9ICJoYXBweSIsCiAgICAgICAgICAgICBkZXByZXNzZWQgPSAic2FkIiwKICAgICAgICAgICBmZWFyID0gInNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwiLAogICAgICAgICAgIGRlcHRoID0gImRlcHRoIiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAibWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAidGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJiZWxpZWZzIiwKICAgICAgICAgICBodW5ncnkgPSAiaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJ0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAic2ljayIsCiAgICAgICAgICAgc2FmZSA9ICJzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJzZWxmLWNvbnRyb2wiLAogICAgICAgICAgIGludGVudGlvbnMgPSAicGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiZ29hbHMiLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJhd2FyZSIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJzZWxmLWF3YXJlIiwKICAgICAgICAgICBkZXNpcmVzID0gImRlc2lyZXMiLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAiZW1wYXRoeSIsCiAgICAgICAgICAgam95ID0gImpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAibW9yYWxpdHkiLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gInBlcnNvbmFsaXR5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJwbGVhc3VyZSIsCiAgICAgICAgICAgcHJvdWQgPSAicHJvdWQiKSkpCgojICMgbWFrZSBkYXRhZnJhbWUgZm9yIHBsb3R0aW5nCiMgc2NhdHRlcl9wbG90dGluZyA8LSBsb2FkaW5ncyhlZmFfZDRfYWxsX3JvdGF0ZWROKVtdICU+JQojICAgZGF0YS5mcmFtZSgpICU+JQojICAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiMgICByZW5hbWUoQk9EWSA9IE1SMSwKIyAgICAgICAgICBIRUFSVCA9IE1SMiwKIyAgICAgICAgICBNSU5EID0gTVIzKSAlPiUKIyAgIGZ1bGxfam9pbih3b3JkaW5nX3M0KSAlPiUKIyAgIG11dGF0ZShkb21pbmFudCA9IGZhY3RvcigKIyAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgIkJPRFkiLAojICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksICJIRUFSVCIsCiMgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgIk1JTkQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSksCiMgICAgIHNpemUgPSBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCBhYnMoQk9EWSksCiMgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksIGFicyhIRUFSVCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksIGFicyhNSU5EKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAojICAgICBjb2xvciA9IGlmZWxzZShkb21pbmFudCA9PSAiQk9EWSIsICIjRTQxQTFDIiwKIyAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJIRUFSVCIsICIjNERBRjRBIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiTUlORCIsICIjRTQxQTFDIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKIyAKIyAjIHBsb3QhCiMgZmlnczQgPC0gcGxvdF9seShzY2F0dGVyX3Bsb3R0aW5nLCB4ID0gfkhFQVJULCB5ID0gfkJPRFksIHogPSB+TUlORCwKIyAgICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyM2QiLAojICAgICAgICAgICAgICBjb2xvciA9IH5kb21pbmFudCwgY29sb3JzID0gYygiIzM3N0VCOCIsICIjNERBRjRBIiwgIiNFNDFBMUMiKSwKIyAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gNCksCiMgICAgICAgICAgICAgIHRleHQgPSB+c2hvcnQsCiMgICAgICAgICAgICAgIHRleHRmb250ID0gbGlzdChzaXplID0gMTUpLAojICAgICAgICAgICAgICBtb2RlID0gInRleHQrbWFya2VycyIsCiMgICAgICAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKQojIAojIGZpZ3M0CmBgYAoKIyMgSGVhdG1hcHMKCipOT1RFOiBzZXQgdG8gMyBmYWN0b3JzIG1hbnVhbGx5LCBmb3Igbm93LioKCiMjIyBTdHVkeSAxIChhZHVsdHMpCgpgYGB7ciBmaWd1cmUgaGVhdG1hcCBzMSwgZmlnLndpZHRoID0gNywgZmlnLmhlaWdodCA9IDd9CmZhY3RvcnNfczEgPC0gZmEuc29ydChmYShkMV9hbGwsIG5mYWN0b3JzID0gMywgY29yID0gY2hvc2VuQ29yVHlwZSwgcm90YXRlID0gY2hvc2VuUm90VHlwZSkkbG9hZGluZ3NbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MxKSAlPiUKICBzZWxlY3Qod29yZGluZywgTVIxLCBNUjIsIE1SMykgJT4lCiAgcmVuYW1lKGNhcGFjaXR5ID0gd29yZGluZywgRmFjdG9yMSA9IE1SMSwgRmFjdG9yMiA9IE1SMiwgRmFjdG9yMyA9IE1SMykgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlciIpICU+JQogIG11dGF0ZShvcmRlciA9IGFzLm51bWVyaWMob3JkZXIpKQoKZmFjdG9yc19zMV9sb25nIDwtIGZhY3RvcnNfczEgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjEiLCAiRjMiLCAiRjIiKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3MxX2JsYW5rMSA8LSBmYWN0b3JzX3MxX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMV9sb25nJGxvYWRpbmcpKSkKIyBmYWN0b3JzX3MxX2JsYW5rMiA8LSBmYWN0b3JzX3MxX2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczFfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zMV9ibGFuazIgPC0gZmFjdG9yc19zMV9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMV9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MxX2JsYW5rMyA8LSBmYWN0b3JzX3MxX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MxX2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3MxX2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczFfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MxX2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3MxX2xvbmcsIGFlcyh4ID0gZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDYpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAwLjUxLCB4bWF4ID0gMS40OSwgeW1pbiA9IDE0LjU1LCB5bWF4ID0gMjAuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDEuNTEsIHhtYXggPSAyLjQ5LCB5bWluID0gNi41NSwgeW1heCA9IDE0LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAyLjUxLCB4bWF4ID0gMy40OSwgeW1pbiA9IDAuNTUsIHltYXggPSA2LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyB0aGVtZV9idygpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKYGBgCgojIyMgU3R1ZHkgMiAoNy05eSkKCmBgYHtyIGZpZ3VyZSBoZWF0bWFwIHMyLCBmaWcud2lkdGggPSA3LCBmaWcuaGVpZ2h0ID0gN30KZmFjdG9yc19zMiA8LSBmYS5zb3J0KGZhKGQyX2FsbCwgbmZhY3RvcnMgPSAzLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlKSRsb2FkaW5nc1tdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczIpICU+JQogIHNlbGVjdCh3b3JkaW5nLCBNUjEsIE1SMiwgTVIzKSAlPiUKICByZW5hbWUoY2FwYWNpdHkgPSB3b3JkaW5nLCBGYWN0b3IxID0gTVIxLCBGYWN0b3IyID0gTVIyLCBGYWN0b3IzID0gTVIzKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyIikgJT4lCiAgbXV0YXRlKG9yZGVyID0gYXMubnVtZXJpYyhvcmRlcikpCgpmYWN0b3JzX3MyX2xvbmcgPC0gZmFjdG9yc19zMiAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvcikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMSIsICJGMyIsICJGMiIpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjIiLCAiRjEiLCAiRjMiKSkpICU+JQogIGFycmFuZ2Uob3JkZXIsIGZhY3RvcikKCmZhY3RvcnNfczJfYmxhbmsxIDwtIGZhY3RvcnNfczJfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MyX2xvbmckbG9hZGluZykpKQpmYWN0b3JzX3MyX2JsYW5rMiA8LSBmYWN0b3JzX3MyX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMSIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MyX2xvbmckbG9hZGluZykqMi8zKSkpCiMgZmFjdG9yc19zMl9ibGFuazIgPC0gZmFjdG9yc19zMl9sb25nICU+JQojICAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMiIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MyX2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczJfYmxhbmszIDwtIGZhY3RvcnNfczJfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgIT0gIkYzIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczJfbG9uZyRsb2FkaW5nKSoxLzMpKSkKCiMgZ2dwbG90KGZhY3RvcnNfczJfYmxhbmsxLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zMl9ibGFuazIsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczJfYmxhbmszLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAoKZ2dwbG90KGZhY3RvcnNfczJfbG9uZywgYWVzKHggPSBmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gNikgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDAuNTEsIHhtYXggPSAxLjQ5LCB5bWluID0gMTQuNTUsIHltYXggPSAyMC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMS41MSwgeG1heCA9IDIuNDksIHltaW4gPSA2LjU1LCB5bWF4ID0gMTQuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDIuNTEsIHhtYXggPSAzLjQ5LCB5bWluID0gMC41NSwgeW1heCA9IDYuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIHRoZW1lX2J3KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMApgYGAKCiMjIyBTdHVkeSAzICg3LTl5KQoKYGBge3IgZmlndXJlIGhlYXRtYXAgczMsIGZpZy53aWR0aCA9IDUsIGZpZy5oZWlnaHQgPSA3fQpmYWN0b3JzX3MzIDwtIGZhLnNvcnQoZmEoZDNfYWxsLCBuZmFjdG9ycyA9IDMsIGNvciA9IGNob3NlbkNvclR5cGUsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUpJGxvYWRpbmdzW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBsZWZ0X2pvaW4od29yZGluZ19zMykgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIE1SMSwgTVIyLCBNUjMpICU+JQogIHJlbmFtZShjYXBhY2l0eSA9IHdvcmRpbmcsIEZhY3RvcjEgPSBNUjEsIEZhY3RvcjIgPSBNUjIsIEZhY3RvcjMgPSBNUjMpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkKCmZhY3RvcnNfczNfbG9uZyA8LSBmYWN0b3JzX3MzICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjEiLCAiRjMiLCAiRjIiKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3MzX2JsYW5rMSA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKSkKIyBmYWN0b3JzX3MzX2JsYW5rMiA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczNfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zM19ibGFuazIgPC0gZmFjdG9yc19zM19sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MzX2JsYW5rMyA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MzX2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3MzX2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczNfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MzX2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3MzX2xvbmcsIGFlcyh4ID0gZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDYpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAwLjUxLCB4bWF4ID0gMS40OSwgeW1pbiA9IDE0LjU1LCB5bWF4ID0gMjAuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDEuNTEsIHhtYXggPSAyLjQ5LCB5bWluID0gNi41NSwgeW1heCA9IDE0LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAyLjUxLCB4bWF4ID0gMy40OSwgeW1pbiA9IDAuNTUsIHltYXggPSA2LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyB0aGVtZV9idygpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKYGBgCgojIyMgU3R1ZHkgNCAoNC02eSkKKDMgZmFjdG9ycyBieSBmb3JjZSkKCmBgYHtyIGZpZ3VyZSBoZWF0bWFwIHM0LCBmaWcud2lkdGggPSA1LCBmaWcuaGVpZ2h0ID0gN30KZmFjdG9yc19zNCA8LSBmYS5zb3J0KGZhKGQ0X2FsbCwgbmZhY3RvcnMgPSAzLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlKSRsb2FkaW5nc1tdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgbGVmdF9qb2luKHdvcmRpbmdfczQpICU+JQogIHNlbGVjdCh3b3JkaW5nLCBNUjEsIE1SMiwgTVIzKSAlPiUKICByZW5hbWUoY2FwYWNpdHkgPSB3b3JkaW5nLCBGYWN0b3IxID0gTVIxLCBGYWN0b3IyID0gTVIyLCBGYWN0b3IzID0gTVIzKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyIikgJT4lCiAgbXV0YXRlKG9yZGVyID0gYXMubnVtZXJpYyhvcmRlcikpCgpmYWN0b3JzX3M0X2xvbmcgPC0gZmFjdG9yc19zNCAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvcikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMSIsICJGMyIsICJGMiIpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjIiLCAiRjEiLCAiRjMiKSkpICU+JQogIGFycmFuZ2Uob3JkZXIsIGZhY3RvcikKCmZhY3RvcnNfczRfYmxhbmsxIDwtIGZhY3RvcnNfczRfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3M0X2xvbmckbG9hZGluZykpKQojIGZhY3RvcnNfczRfYmxhbmsyIDwtIGZhY3RvcnNfczRfbG9uZyAlPiUKIyAgIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjEiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zNF9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3M0X2JsYW5rMiA8LSBmYWN0b3JzX3M0X2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMiIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3M0X2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczRfYmxhbmszIDwtIGZhY3RvcnNfczRfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgIT0gIkYzIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczRfbG9uZyRsb2FkaW5nKSoxLzMpKSkKCiMgZ2dwbG90KGZhY3RvcnNfczRfYmxhbmsxLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zNF9ibGFuazIsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczRfYmxhbmszLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAoKZ2dwbG90KGZhY3RvcnNfczRfbG9uZywgYWVzKHggPSBmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gNikgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDAuNTEsIHhtYXggPSAxLjQ5LCB5bWluID0gMTQuNTUsIHltYXggPSAyMC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMS41MSwgeG1heCA9IDIuNDksIHltaW4gPSA2LjU1LCB5bWF4ID0gMTQuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDIuNTEsIHhtYXggPSAzLjQ5LCB5bWluID0gMC41NSwgeW1heCA9IDYuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIHRoZW1lX2J3KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMApgYGAKCiMjIE1lYW4gcmF0aW5ncwoKIyMjIFN0dWRpZXMgMS0yCgpNZWFuIHJhdGluZ3Mgb2YgNDAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIHRoZSAyIGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWRpZXMgMS0yLiBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgMy1wb2ludCBzY2FsZSAoMCA9ICJubyIsIDAuNSA9ICJraW5kYSIsIDEgPSAieWVzIikuIEVycm9yIGJhcnMgYXJlIG5vbnBhcmFtZXRyaWMgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscy4gTWVudGFsIGNhcGFjaXRpZXMgYXJlIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nIGluIFN0dWR5IDEgKGFkdWx0cykuCgpgYGB7ciBmaWd1cmUgbWVhbiByYXRpbmdzIHMxLXMyLCBmaWcud2lkdGggPSAzLCBmaWcuaGVpZ2h0ID0gM30KIyBtYWtlIGRhdGFmcmFtZQpzMTJfcGxvdHRpbmcgPC0gY2hhcl9wbG90dGluZyAlPiUKICBmaWx0ZXIoc3R1ZHkgJWluJSBjKCJzdHVkeSAxIiwgInN0dWR5IDIiKSkgJT4lCiAgZGlzdGluY3QoKQoKIyBwbG90ISAob3JkZXJlZCBieSBzdHVkeSAzIGZhY3RvciBsb2FkaW5ncykKczEyIDwtIGdncGxvdChzMTJfcGxvdHRpbmcsCiAgICAgICAgICAgICAgIGFlcyh5ID0gc3VtbWFyeV9tZWFuX25hLCB4ID0gcmVvcmRlcih3b3JkaW5nLCBkZXNjKHMxX29yZGVyKSksCiAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBmYWN0b3IoczFfY29sb3IpLCBzaGFwZSA9IHN0dWR5KSkgKwogIGdlb21fcG9pbnQoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpLCBzaXplID0gMikgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyX25hLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlcl9uYSksIHdpZHRoID0gMC40LAogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNikpICsKICBmYWNldF93cmFwKH4gY2hhcmFjdGVyKSArCiAgdGhlbWVfYncoKSArCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiXG5NZWFuIHJhdGluZyIsCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IGMoMCwgMC41LCAxKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiMFxuKG5vKSIsICIwLjVcbihraW5kYSkiLCAiMVxuKHllcykiKSkgKwogIHNjYWxlX3NoYXBlX2Rpc2NyZXRlKG5hbWUgPSAiU3R1ZHk6IiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTdHVkeSAxOiBhZHVsdHMiLCAiU3R1ZHkgMjogNy05eSIpKSArCiAgIyBzY2FsZV9jb2xvdXJfYnJld2VyKG5hbWUgPSAiRmFjdG9yOiIsCiAgIyAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAicXVhbCIsIHBhbGV0dGUgPSA2LAogICMgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IEZBTFNFKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbChuYW1lID0gIkZhY3RvcjoiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygiI0U0MUExQyIsICIjNERBRjRBIiwgIiMzNzdFQjgiKSwKICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkJPRFkiLCAiTUlORCIsICJIRUFSVCIpKSArCiAgY29vcmRfZmxpcCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwKICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IHBhbGV0dGVfczEpLAogICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpLAogICAgICBsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiKQoKczEyCmBgYAoKIyMjIFN0dWRpZXMgMy00CgpNZWFuIHJhdGluZ3Mgb2YgMjAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIHRoZSA5IGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWRpZXMgMy00LiBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgMy1wb2ludCBzY2FsZSAoMCA9ICJubyIsIDAuNSA9ICJraW5kYSIsIDEgPSAieWVzIikuIEVycm9yIGJhcnMgYXJlIG5vbnBhcmFtZXRyaWMgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscy4gTWVudGFsIGNhcGFjaXRpZXMgYXJlIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nIGluIFN0dWR5IDMgKDctOXkpLgoKYGBge3IgZmlndXJlIG1lYW4gcmF0aW5ncyBzMy1zNCwgZmlnLndpZHRoID0gNSwgZmlnLmhlaWdodCA9IDN9CiMgbWFrZSBkYXRhZnJhbWUKczM0X3Bsb3R0aW5nIDwtIGNoYXJfcGxvdHRpbmcgJT4lCiAgZmlsdGVyKHN0dWR5ICVpbiUgYygic3R1ZHkgMyIsICJzdHVkeSA0IiksCiAgICAgICAgICFpcy5uYShzM19vcmRlciksICFpcy5uYShjaGFyYWN0ZXIpLCAhaXMubmEoY2FwYWNpdHkpKSAlPiUKICBkaXN0aW5jdCgpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwgInJvYm90IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKQoKIyBwbG90ISAob3JkZXJlZCBieSBzdHVkeSAzIGZhY3RvciBsb2FkaW5ncykKczM0IDwtIGdncGxvdChzMzRfcGxvdHRpbmcsCiAgICAgICAgICAgICAgIGFlcyh5ID0gc3VtbWFyeV9tZWFuX25hLCB4ID0gcmVvcmRlcih3b3JkaW5nLCBkZXNjKHMzX29yZGVyKSksIAogICAgICAgICAgICAgICAgICAgIyBjb2xvdXIgPSBzdHVkeSwKICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IHMzX2NvbG9yLAogICAgICAgICAgICAgICAgICAgc2hhcGUgPSBzdHVkeSkpICsKICBnZW9tX3BvaW50KHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSwgc2l6ZSA9IDIpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gc3VtbWFyeV9jaV9sb3dlcl9uYSwgeW1heCA9IHN1bW1hcnlfY2lfdXBwZXJfbmEpLCB3aWR0aCA9IDAuNCwKICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpKSArCiAgZmFjZXRfd3JhcCh+IGNoYXJhY3RlciwgbmNvbCA9IDkpICsKICB0aGVtZV9idygpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJcbk1lYW4gcmF0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygwLCAwLjUsIDEpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIwXG4obm8pIiwgIjAuNVxuKGtpbmRhKSIsICIxXG4oeWVzKSIpKSArCiAgc2NhbGVfc2hhcGVfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlN0dWR5IDM6IDctOXkiLCAiU3R1ZHkgNDogNC02eSIpKSArCiAgIyBzY2FsZV9jb2xvdXJfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICMgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU3R1ZHkgMzogNy05eSIsICJTdHVkeSA0OiA0LTZ5IikpICsKICAjIHNjYWxlX2NvbG91cl9icmV3ZXIobmFtZSA9ICJGYWN0b3I6IiwKICAjICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJxdWFsIiwgcGFsZXR0ZSA9IDYsCiAgIyAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiRmFjdG9yOiIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCIjRTQxQTFDIiwgIiMzNzdFQjgiLCAiIzREQUY0QSIpLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikpICsKICBjb29yZF9mbGlwKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDkpLAogICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29sb3VyID0gcGFsZXR0ZV9zMSksCiAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQoKczM0CmBgYAoKIyBNZWFuIGZhY3RvciBzY29yZXMKCiMjIFN0dWRpZXMgMS0yCgpgYGB7ciBzMTIgYWxsIG5vIHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KIyBtYWtlIGNvbWJpbmVkIGRhdGFzZXQKZDEyX2FsbCA8LSBkMV9hbGwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSAlPiUKICBmdWxsX2pvaW4oZDJfYWxsICU+JSByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic3ViaWQiKQoKIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDEyX2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMTJfYWxsX3Vucm90YXRlZCA8LSBmYShkMTJfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDEyX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDEyX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QxMl9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kMTJfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kMTJfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMxMiBhbGwgcm90YXRpb24sIGluY2x1ZGUgPSBGfQplZmFfZDEyX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMTJfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kMTJfYWxsX3JvdGF0ZWQgPC0gZmEoZDEyX2FsbCwgZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMTJfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMTJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDEyX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QxMl9hbGwgPC0gZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDEyX2FsbApgYGAKCmBgYHtyIHMxMiBhbGwgdmFyaW1heCByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMTJfYWxsX3JvdGF0ZWROIDwtIGZhKGQxMl9hbGwsIG5mYWN0b3JzX2QxMl9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVzID0gInRlbkJlcmdlIiwgbWlzc2luZyA9IFRSVUUpICMgaW1wdXRlIG1pc3NpbmcgdmFsdWVzCnByaW50KGVmYV9kMTJfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kMTJfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMTJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKYGBge3IgczEyIGxvYWRpbmdzIHRhYmxlLCBpbmNsdWRlID0gRn0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMTJfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKYGBge3IgczEyIGZpZ3VyZSBzZXR1cCwgaW5jbHVkZSA9IEZ9CnNjb3Jlc19zMTJfcGxvdHRpbmcgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZDIgJT4lIAogICAgICAgICAgICAgIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICAgICAgICAgICAgICBkaXN0aW5jdCgpICU+JSAKICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlX2dyb3VwKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJzY29yZSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImFnZV9ncm91cCIsICJjaGFyYWN0ZXIiLCAiZmFjdG9yIiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoIm1lYW4iLCAiY2lfbG93ZXIiLCAiY2lfdXBwZXIiKSkKYGBgCgpgYGB7ciBzMTIgcmVncmVzc2lvbn0KdGVtcEMgPC0gZDEgJT4lIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkMiAlPiUgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihkYXRhLmZyYW1lKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcykgJT4lCiAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSAlPiUKICAgICAgICAgICAgICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgLXN1YmlkKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpLAogICAgICAgICBhZ2VfZ3JvdXAgPSBmYWN0b3IoYWdlX2dyb3VwKSwKICAgICAgICAgY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICMgJT4lCiAgIyBmaWx0ZXIoIWlzLm5hKGZhY3RvciksICFpcy5uYShhZ2VfZ3JvdXApLCAhaXMubmEoY2hhcmFjdGVyKSkKCmNvbnRyYXN0cyh0ZW1wQyRmYWN0b3IpID0gY2JpbmQoZmFjdG9yMSA9IGMoMSwgLTEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY3RvcjMgPSBjKDAsIC0xLCAxKSkKCmNvbnRyYXN0cyh0ZW1wQyRhZ2VfZ3JvdXApID0gY2JpbmQoY2hpbGRyZW4gPSBjKC0xLCAxKSkKY29udHJhc3RzKHRlbXBDJGNoYXJhY3RlcikgPSBjYmluZChyb2JvdCA9IGMoLTEsIDEpKQoKbGlicmFyeShsbWU0KQpyMSA8LSBsbWVyKHNjb3JlIH4gY2hhcmFjdGVyICogZmFjdG9yICogYWdlX2dyb3VwICsgKDEgfCBzdWJpZCkgLCB0ZW1wQykKc3VtbWFyeShyMSkKCiMgbGlicmFyeShicm1zKQojIHIxYiA8LSBicm0oc2NvcmUgfiBjaGFyYWN0ZXIgKiBmYWN0b3IgKiBhZ2VfZ3JvdXAgKyAoMSB8IHN1YmlkKSAsIHRlbXBDLAojICAgICAgICAgICAgIGZhbWlseSA9ICJnYXVzc2lhbiIpCiMgc3VtbWFyeShyMWIpCmBgYAoKYGBge3IgczEyIGZpZ3VyZSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBncm91cCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CiMgcGxvdApnZ3Bsb3Qoc2NvcmVzX3MxMl9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpLAogICAgICAgICAgICAgICAgYWdlX2dyb3VwID0gZmFjdG9yKGFnZV9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGV2ZWxzID0gYygiYWR1bHRzIiwgImNoaWxkcmVuXzc5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxhYmVscyA9IGMoImFkdWx0cyIsICJjaGlsZHJlbiIpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjaGlsZHJlbl83OSIsICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNoaWxkcmVuIiwgImFkdWx0cyIpKSksCiAgICAgICBhZXMoeCA9IGFnZV9ncm91cCwgeSA9IHN1bW1hcnlfbWVhbiwgY29sb3IgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgZ2VvbV9wb2ludChzaXplID0gNSwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNCkpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gc3VtbWFyeV9jaV9sb3dlciwgeW1heCA9IHN1bW1hcnlfY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTksIDE1KSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBhZ2UgZ3JvdXAiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJBZHVsdHMgKFN0dWR5IDEpIHZzLiBjaGlsZHJlbiAoU3R1ZHkgMilcbiIsCiAgICAgICB4ID0gIkFnZSBncm91cCIsCiAgICAgICB5ID0gIk1lYW4gZmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMjIFN0dWR5IDMKCmBgYHtyIHMzIGZpZ3VyZSBzZXR1cCwgaW5jbHVkZSA9IEZ9CnNjb3Jlc19zM19wbG90dGluZyA8LSBkMyAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDNfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlX2dyb3VwKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJzY29yZSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImFnZV9ncm91cCIsICJjaGFyYWN0ZXIiLCAiZmFjdG9yIiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoIm1lYW4iLCAiY2lfbG93ZXIiLCAiY2lfdXBwZXIiKSkKYGBgCgpgYGB7ciBzMyBmaWd1cmUgZmFjdG9yIHNjb3JlcyBieSBjaGFyYWN0ZXIsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSAzfQpnZ3Bsb3Qoc2NvcmVzX3MzX3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5X2JlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5IGJlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSksCiAgICAgICAgICAgICAgICBmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInNjb3JlX0YyIiwgInNjb3JlX0YxIiwgInNjb3JlX0YzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsICJCb2RpbHkiLCAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpLAogICAgICAgYWVzKHggPSBjaGFyYWN0ZXIsIHkgPSBzdW1tYXJ5X21lYW4sIGNvbG9yID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKH4gZmFjdG9yLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICBnZW9tX3BvaW50KHNpemUgPSA1LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlciksIAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCAxOSwgcmVwKDE3LCA0KSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNywgMTUsIHJlcCgxNywgMiksIDE5LCByZXAoMTcsIDQpKSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBjaGFyYWN0ZXIiLAogICAgICAgeCA9ICJDaGFyYWN0ZXIiLAogICAgICAgeSA9ICJNZWFuIGZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgoKIyMgU3R1ZGllcyAzLTQKCmBgYHtyIHMzNCBhbGwgbm8gcm90YXRpb24sIGluY2x1ZGUgPSBGfQojIG1ha2UgY29tYmluZWQgZGF0YXNldApkMzRfYWxsIDwtIGQzX2FsbCAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpICU+JQogIGZ1bGxfam9pbihkNF9hbGwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzdWJpZCIpCgojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkMzRfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzNF9hbGxfdW5yb3RhdGVkIDwtIGZhKGQzNF9hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMzRfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kMzRfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDM0X2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDM0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QzNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2QzNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczM0IGFsbCByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CmVmYV9kMzRfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQzNF9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QzNF9hbGxfcm90YXRlZCA8LSBmYShkMzRfYWxsLCBlZmFfZDM0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDM0X2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2QzNF9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QzNF9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kMzRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDM0X2FsbCA8LSBlZmFfZDM0X2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kMzRfYWxsCmBgYAoKYGBge3IgczM0IGFsbCB2YXJpbWF4IHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzNF9hbGxfcm90YXRlZE4gPC0gZmEoZDM0X2FsbCwgbmZhY3RvcnNfZDM0X2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yZXMgPSAidGVuQmVyZ2UiLCBtaXNzaW5nID0gVFJVRSkgIyBpbXB1dGUgbWlzc2luZyB2YWx1ZXMKcHJpbnQoZWZhX2QzNF9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QzNF9hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2QzNF9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgpgYGB7ciBzMzQgbG9hZGluZ3MgdGFibGUsIGluY2x1ZGUgPSBGfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QzNF9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgpgYGB7ciBzMzQgZmlndXJlIHNldHVwLCBpbmNsdWRlID0gRn0Kc2NvcmVzX3MzNF9wbG90dGluZyA8LSBkMyAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkNCAlPiUgCiAgICAgICAgICAgICAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogICAgICAgICAgICAgIGRpc3RpbmN0KCkgJT4lIAogICAgICAgICAgICAgIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2QzNF9hbGxfcm90YXRlZE4kc2NvcmVzICU+JSAKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lIAogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICByZW5hbWUoc2NvcmVfRjEgPSBNUjEsIHNjb3JlX0YyID0gTVIyLCBzY29yZV9GMyA9IE1SMykgJT4lCiAgZmlsdGVyKCFpcy5uYShzY29yZV9GMSksICFpcy5uYShzY29yZV9GMiksICFpcy5uYShzY29yZV9GMyksICFpcy5uYShhZ2VfZ3JvdXApKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInNjb3JlIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiYWdlX2dyb3VwIiwgImNoYXJhY3RlciIsICJmYWN0b3IiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygibWVhbiIsICJjaV9sb3dlciIsICJjaV91cHBlciIpKQpgYGAKCmBgYHtyIHMzNCBmaWd1cmUgZmFjdG9yIHNjb3JlcyBieSBhZ2UgZ3JvdXAsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSAzfQojIHBsb3QKZ2dwbG90KHNjb3Jlc19zMzRfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHkgYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSwKICAgICAgICAgICAgICAgIGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjIiLCAic2NvcmVfRjEiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwgIkJvZGlseSIsICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSwKICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGZhY3RvcihhZ2VfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjaGlsZHJlbl80NiIsICJjaGlsZHJlbl83OSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiNC02eSIsICI3LTl5IikpKSwKICAgICAgIGFlcyh4ID0gY2hhcmFjdGVyLCB5ID0gc3VtbWFyeV9tZWFuLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBhZ2VfZ3JvdXApKSArCiAgZmFjZXRfd3JhcCh+IGZhY3RvciwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsKICBnZW9tX3BvaW50KHNpemUgPSA1LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlciksIAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCAxOSwgcmVwKDE3LCA0KSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSksCiAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hhcmFjdGVyIGFuZCBhZ2UgZ3JvdXAiLAogICAgICAgeCA9ICJDaGFyYWN0ZXIiLAogICAgICAgeSA9ICJNZWFuIGZhY3RvciBzY29yZSIsCiAgICAgICBzaGFwZSA9ICJBZ2UgZ3JvdXA6ICIpICMgMTAwMCBieSA1MDAKYGBgCgojIEZhY3RvciBzY29yZXMgYnkgYWdlCgojIyBTdHVkeSAxCgpgYGB7ciBzMSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBzZXR1cCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CnNjb3Jlc19zMV9wbG90dGluZyA8LSBkMSAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDFfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQoKZ2dwbG90KHNjb3Jlc19zMV9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJzY29yZV9GMSIsICJzY29yZV9GMiIsICJzY29yZV9GMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpLAogICAgICAgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgY29sb3IgPSBjaGFyYWN0ZXIsIGZpbGwgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE5LCAxNSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgYWR1bHRzJyBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJBZHVsdHMgKFN0dWR5IDEpXG4iLAogICAgICAgeCA9ICJBZ2UgKHllYXJzKSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgojIyBTdHVkeSAyCgpgYGB7ciBzMiBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBzZXR1cCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CnNjb3Jlc19zMl9wbG90dGluZyA8LSBkMiAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDJfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQoKZ2dwbG90KHNjb3Jlc19zMl9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpKSwKICAgICAgIGFlcyh4ID0gYWdlLCB5ID0gc2NvcmUsIGNvbG9yID0gY2hhcmFjdGVyLCBmaWxsID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxOSwgMTUpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGNoaWxkcmVuJ3MgYWdlIiwKICAgICAgICMgc3VidGl0bGUgPSAiQ2hpbGRyZW4gKFN0dWR5IDIpXG4iLAogICAgICAgeCA9ICJBZ2UgKHllYXJzKSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgojIyBTdHVkaWVzIDEtMgoKYGBge3IgczEyIHNjYXR0ZXIgcGx1cyBtZWFuIHNjb3JlcyBieSBhZ2Ugc2V0dXAsIGZpZy53aWR0aCA9IDUsIGZpZy5oZWlnaHQgPSAzfQp0ZW1wQSA8LSBkMiAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDEyX2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZSkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpCgp0ZW1wQiA8LSBzY29yZXNfczEyX3Bsb3R0aW5nICU+JQogIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9kaWx5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpLAogICAgICAgICBhZ2UgPSAxMSkgCgpnZ3Bsb3QodGVtcEEsCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBjb2xvciA9IGNoYXJhY3RlciwgZmlsbCA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCgiZmFjdG9yIiwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKwogIGdlb21fcG9pbnQoZGF0YSA9IHRlbXBCLCBhZXMoeSA9IHN1bW1hcnlfbWVhbiksCiAgICAgICAgICAgICBzaXplID0gNCwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNikpICsKICBnZW9tX2Vycm9yYmFyKGRhdGEgPSB0ZW1wQiwgYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlciwgeSA9IHN1bW1hcnlfbWVhbiksIHdpZHRoID0gMC40LAogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNikpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxOSwgMTUpKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IGMoNzoxMSksIGxhYmVscyA9IGMoIjd5IiwgIjh5IiwgIjl5IiwgIjEweSIsICJhZHVsdHMiKSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJDaGlsZHJlbiAoU3R1ZHkgMilcbiIsCiAgICAgICB4ID0gIkFnZSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgojIyBTdHVkaWVzIDMtNAoKYGBge3IgczM0IGZhY3RvciBzY29yZXMgYnkgYWdlIHNldHVwLCBmaWcud2lkdGggPSA1LCBmaWcuaGVpZ2h0ID0gMTB9CnNjb3Jlc19zMzRfcGxvdHRpbmcgPC0gZDMgJT4lCiAgc2VsZWN0KGFnZV9ncm91cCwgc3ViaWQsIGFnZSwgY2hhcmFjdGVyKSAlPiUKICBkaXN0aW5jdCgpICU+JQogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkNCAlPiUKICAgICAgICAgICAgICBzZWxlY3QoYWdlX2dyb3VwLCBzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JQogICAgICAgICAgICAgIGRpc3RpbmN0KCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihlZmFfZDM0X2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICBtdXRhdGUoYWdlID0gaWZlbHNlKGFnZSA8IDMuNSwgTkEsIGFnZSkpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZSkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkKCmdncGxvdChzY29yZXNfczM0X3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInNjb3JlX0YxIiwgInNjb3JlX0YyIiwgInNjb3JlX0YzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIpKSwKICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAicm9ib3QiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKSwKICAgICAgICMgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgY29sb3IgPSBjaGFyYWN0ZXIsIGZpbGwgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogICAgICAgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgZ3JvdXAgPSBhZ2VfZ3JvdXApKSArCiAgIyBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogICMgZmFjZXRfZ3JpZChmYWN0b3IgfiBjaGFyYWN0ZXIpICsKICBmYWNldF9ncmlkKGNoYXJhY3RlciB+IGZhY3RvcikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40LCBmb3JtdWxhID0geSB+IHBvbHkoeCwgMikpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40LCBmb3JtdWxhID0geSB+IHBvbHkoeCwgMykpICsKICBnZW9tX3BvaW50KHNpemUgPSAyKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgyLCAxMiwgMikpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgIiMwMEJGQzQiLCByZXAoImdyYXkiLCAyKSwgIiNGODc2NkQiLCByZXAoImJsYWNrIiwgNCkpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICAjIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE3LCAxNSwgcmVwKDE3LCAyKSwgMTksIHJlcCgxNywgNCkpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGNoaWxkcmVuJ3MgYWdlIiwKICAgICAgICMgc3VidGl0bGUgPSAiQ2hpbGRyZW4gKFN0dWRpZXMgMy00KVxuIiwKICAgICAgIHggPSAiQWdlICh5ZWFycykiLAogICAgICAgeSA9ICJGYWN0b3Igc2NvcmUiKSAjIDEwMDAgYnkgNTAwCgpnZ3Bsb3Qoc2NvcmVzX3MzNF9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJzY29yZV9GMSIsICJzY29yZV9GMiIsICJzY29yZV9GMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiKSksCiAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSksCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlKSkgKwogICAgICAgIyBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBncm91cCA9IGFnZV9ncm91cCkpICsKICAjIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgIyBmYWNldF9ncmlkKGZhY3RvciB+IGNoYXJhY3RlcikgKwogIGZhY2V0X2dyaWQoY2hhcmFjdGVyIH4gZmFjdG9yKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQsIGZvcm11bGEgPSB5IH4gcG9seSh4LCAyKSkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQsIGZvcm11bGEgPSB5IH4gcG9seSh4LCAzKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDIsIDEyLCAyKSkgKwogICMgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCByZXAoMTcsIDIpLCAxOSwgcmVwKDE3LCA0KSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hpbGRyZW4ncyBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJDaGlsZHJlbiAoU3R1ZGllcyAzLTQpXG4iLAogICAgICAgeCA9ICJBZ2UgKHllYXJzKSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCg==